home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / game / role / ldmud-3.2-bin.lha / mud / CHANGELOG next >
Text File  |  2001-08-15  |  198KB  |  3,905 lines

  1. This file lists all changes made to the game driver in all gory detail.
  2. See the file HISTORY for a user-oriented summary of all the changes.
  3.  
  4. 14-Aug-2001 (Lars Duening)  (3.2.9-dev.320)
  5.     - (interpret) The VM now holds a reference on a lambda while it is
  6.          executed, preventing premature destructions (reported by Dan and
  7.          Fiona).
  8.     - (simulate, actions.c, backend.c, comm.c, gcollect.c) Since the VM
  9.          now protects lambdas during their execution, the free_closure_hooks()
  10.          hack is no longer needed. For now, the code has been just
  11.          deactivated.
  12.     - (interpret.c) Corrected late-night errors in efuns ceil() and floor()
  13.          (reported by Niels).
  14.  
  15. 13-Aug-2001 (Lars Duening)
  16.     - (mapping.c) Adding a mapping to itself via 'm += m' freed svalues
  17.          first, then used them as data for assignment. This might be
  18.          the cause for b-000218 (reported by Patryn).
  19.  
  20. 12-Aug-2001 (Lars Duening)
  21.     - (func_spec) Somehow the change for sizeof() didn't make it into
  22.          the distribution (reported by Menaures).
  23.  
  24. 07-Aug-2001 (Lars Duening)  (3.2.9-dev.319)
  25.     - (lex.c) The recognition of numeric character constants was slightly
  26.          wrong (thanks, Fiona).
  27.  
  28. 06-Aug-2001 (Lars Duening)
  29.     - (interpret.c) Efun program_name() now accepts 0 as
  30.          argument and pass it through (suggested by Niels).
  31.     - (func_spec, interpret.c) Efuns floor() and ceil() also accept integer
  32.          argument values  (suggested by Niels).
  33.  
  34. 05-Aug-2001 (Lars Duening)  (3.2.9-dev.318)
  35.     - (simulate.c) Destructing an object with a single shadow crashed the
  36.          driver (reported by Craig).
  37.     - (interpret.c) Efuns load_name() and object_name() now accept 0 as
  38.          argument and pass it through (suggested by Niels).
  39.     - (interpret.c) Calling an alien-lfun created two control frames instead
  40.          of just one, with no obvious purpose. I removed one of the frames
  41.          but commenting out the code, so if it is needed nonetheless, it
  42.          will be easy to reactivate (reported by Niels).
  43.     - (interpret.c) For the first 255 simul-efuns it is now permissible to
  44.          receive references in a varargs parameter, e.g. to implement
  45.          a simulated call_other(). Handle with care! (reported by Coogan)
  46.     - (configure) Improved the search for mySQL libraries - it is amazing in
  47.          how many different ways this package is installed.
  48.  
  49. 02-Aug-2001 (Lars Duening)
  50.     - (interpret.c) Corrected a wrong function argument (reported by Freaky).
  51.  
  52. 01-Aug-2001 (Lars Duening)  (3.2.9-dev.317)
  53.     - (prolang.y) The error message for the case that a wildcarded super
  54.          call tried to pass arguments was confusing (reported by Gimli).
  55.     - (interpret.c) Efun sizeof() can be used on strings (suggested by Niels).
  56.  
  57. 31-Jul-2001 (Lars Duening)  (3.2.9-dev.316)
  58.     - (pkg-mysql.c) Fixed a syntax error. It sucks that I can't compile
  59.          this file at home, doesn't it?
  60.     - (lex.c) A preprocessor statement following a macro redefinition
  61.          wasn't recognized because the macro parsing code clobbered
  62.          the newline character (thanks, Fuchur!).
  63.  
  64. 26-Jul-2001 (Lars Duening)  (3.2.9-dev.315)
  65.     - (lex.c) The redefinition of a macro messed up the list of defines,
  66.         eventually crashing the driver (reported by Freaky).
  67.     - (efuns.c) Using terminal_colour() with a closure as lookup method
  68.         an a non-tabled keyword crashed the driver (reported by Elric).
  69.     - (simulate.c) Clones no longer inherit the current O_WILL_CLEAN_UP
  70.         flag from their blueprint - it didn't make sense (thanks, Niels!).
  71.  
  72. 25-Jul-2001 (Lars Duening)  (3.2.9-dev.314)
  73.     - (sprintf.c) Printing numbers with leading zeroes and a sign character
  74.         printed the sign in the wrong place (reported by Dafire).
  75.     - (backend.c) The check_alarm() function did not quite work right
  76.         (thanks, Coogan!).
  77.     - (backend.c) Efun regreplace(): Pattern which could match on the
  78.         empty string matched once too often at string end.
  79.         E.g. regreplace("blah fasel", ".*", "ERSATZ", 1) returned
  80.         "ERSATZERSATZ" instead of just "ERSATZ" (thanks, Fiona!).
  81.     - (typedefs.h) Upped the StrRefCount type to 'unsigned long' (b-010320).
  82.     - (lex.c) Redefinition of a macro yields a warning even if the
  83.         definition doesn't change (suggested by Gnomi).
  84.     - (backend.c, simulate.c) The initial setting of the O_WILL_CLEAN_UP flag
  85.         checked for the hardcoded "clean_up" lfun instead for what the
  86.         H_CLEAN_UP hook said. Also, the documentation was slightly out
  87.         of sync with the reality (thanks, Niels!).
  88.     - (mysql.c) db_error() used a non-existing argument (thanks, Dafire!).
  89.  
  90. 17-Jul-2001 (Lars Duening)  (3.2.9-dev.313)
  91.     - (array, gcollect.c, mapping) The GC now recounts the number of arrays 
  92.         and mappings in the game (reported by Niels).
  93.     - (prolang.y) If the compiler detects a function call with too many
  94.         arguments, the subsequent argument type checks were wrong
  95.         (reported by Fiona).
  96.     - (sprintf.c) Instead of using the new modifier '$', the efun now
  97.         uses the existence of an explicite pad string specification
  98.         as flag whether to remove pad space before new lines or not.
  99.         This is actually more logical to use than a modifier (suggested
  100.         by Largo).
  101.     - (actions.c) The special command 'malloc' now follows the
  102.         'is_wizard' handling of the other special commands (thanks,
  103.         Niels).
  104.  
  105. 16-Jul-2001 (Lars Duening)  (3.2.9-dev.312)
  106.     - (gcollect.c) Oops. Freeing a circular array reference with
  107.         MALLOC_LPC_TRACE enabled crashed the driver in the dump
  108.         of the array contents.
  109.  
  110. 15-Jul-2001 (Lars Duening)  (3.2.9-dev.311)
  111.     - (actions, simulate) Removing or destructing a shadow now properly
  112.         removes all associated actions (reported by Nathan).
  113.     - (actions.c) New add_action() flag AA_IMM_ARGS implements the sane
  114.         NOSPACE argument handling.
  115.  
  116. 15-Jul-2001 (Lars Duening)  (3.2.9-dev.310)
  117.     - (configure) When testing for mySQL, the driver automatically checks
  118.          in /usr/local/include as well (some systems don't have it the
  119.          default include path).
  120.     - (configure) Added a check for 'minimal optimization' options.
  121.     - (configure) When compiling on Windows, link in a couple of more
  122.          libraries. This might not be fully correct yet.
  123.     - (make_func.y) Removed a couple of warnings under gcc 3.0 (thanks,
  124.         Largo!).
  125.     - (comm.c) On a regular shutdown, stop the erq demon explicitely.
  126.     - (main.c) When compiling for MSDOS_FS, the erq pathname wasn't built
  127.         correctly (reported by Coogan).
  128.     - (sprintf.c) Simul-efun closures printed with %O are marked as such.
  129.     - (closure.c) Comparison of operator, efun, and simul-efun closures
  130.         was instable (reported by Nathan).
  131.  
  132. 13-Jul-2001 (Lars Duening)  (3.2.9-dev.309)
  133.     - (interpret.c, comm.c, parse.c, parse_old.c) Removed a couple of
  134.         undefined behaviours, detected by gcc 3.0 (thanks, Largo!)
  135.     - (sprintf.c) Format modifier '$' instructs (s)printf() to not remove
  136.          padding white space before a lineend.
  137.     - (efuns) New efuns gmtime() and localtime() to return the time broken
  138.          up into its constituents (suggested by Markus Peter).
  139.     - (lex.c) Escaped character constants are now only parsed up to a
  140.          maximum length. If no valid digits are found, the whole item
  141.          is simply treated as escaped character (thanks, Fiona!).
  142.  
  143. 05-Jul-2001 (Lars Duening)  (3.2.9-dev.308)
  144.     - (prolang.y) It is now possible again to redefine a non-static inherited
  145.          variable with a static one (or vice versa), but it also generates
  146.          a warning.
  147.     - (doc/concepts/intermud*) Intermud-2 documentation added (thanks, Fiona!)
  148.  
  149. 03-Jul-2001 (Lars Duening)  (3.2.9-dev.307)
  150.     - (prolang.y) How embarrassing! The code for !INITIALIZATION_BY_INIT
  151.         had a bad syntax error - and I didn't notice it (thanks, Bardioc!)
  152.  
  153. 01-Jul-2001 (Lars Duening)  (3.2.9-dev.306)
  154.     - (configure) 'with_wizlist_file=no' didn't work from settings files
  155.         (reported by Freaky).
  156.     - (configure) A superfluous 'fi' broke the configure.
  157.     - (lex.c)  '//' comments didn't like to be terminated by the end of
  158.         file (reported by Matthew).
  159.  
  160. 30-Jun-2001 (Lars Duening)  (3.2.9-dev.304 and dev.305)
  161.     - (hosts/os2) Updated the OS/2 port (provided by Bart).
  162.  
  163. 30-Jun-2001 (Lars Duening)  (3.2.9-dev.303)
  164.     - (prolang.y) Relaxed type checking somewhat so that a non-mixed
  165.         function argument can be redefined to mixed, and vice versa
  166.         (suggested by Gnomi)
  167.     - (lex.c) Escaped character constants in inline closures weren't
  168.         recognized (reported by Freaky and Gnomi)
  169.     - (doc/LPC/comments) New.
  170.     - (configure.in) When using mySQL, also check for libnsl.
  171.     - (configure.in) The mySQL path is now used for both include
  172.         and library searches.
  173.  
  174. 29-Jun-2001 (Lars Duening)  (3.2.9-dev.302)
  175.     - (prolang.y) Accidentally it was no longer possible to redefine 
  176.         privately inherited variables (reported by Gnomi).
  177.     - (actions.c, simulate.c) New hook H_SEND_NOTIFY_FAIL to deliver
  178.         the notify fail message. It is meant for those muds who want
  179.         control over the command flow without having to implement everything
  180.         themselves via the H_COMMAND hook. This hook is still experimental
  181.         and may change in details (suggested by Gnomi).
  182.     - (prolang.y) It is now possible to define a default visibility
  183.         for functions and variables (see doc/LPC/modifiers) (suggested
  184.         by Freaky).
  185.  
  186. 29-Jun-2001 (Lars Duening)  (3.2.9-dev.301)
  187.     - (main.c) Commandline arguments can now be read from a textfile, using
  188.         new commandline option '--args'. These argument files can be nested.
  189.         (suggested by Elric)
  190.  
  191. 28-Jun-2001 (Lars Duening)  (3.2.9-dev.300)
  192.     - (configure) The evaluation of the '--with-wizlist-file' configuration
  193.         option was less than flawless.
  194.     - (main.c) Instead of scanning the arguments twice, all encountered
  195.         -f options are stored in a temporary list and evaluated when
  196.         it's time.
  197.     - (main.c) Laid the groundwork for nested sources for the command
  198.         arguments.
  199.  
  200. 27-Jun-2001 (Lars Duening)  (3.2.9-dev.299)
  201.     - (simulate.c) When parsing callback arguments, the pattern 'function,
  202.       object, extra' was parsed such that 'object' became part of the
  203.       'extra' arguments (reported by Marthin).
  204.     - (lex.c) It is now possible to use symbols in inline closures, ie.
  205.         "(: 'a :)" (reported by Menaures).
  206.     - (main.c, lex.c, wiz_list, configure) The name of the WIZLIST file
  207.         can now be configured at compile time and with commandline option
  208.         '--wizlist-file'. The LPC macro __WIZLIST__ expands to the selected
  209.         name.  The WIZLIST file can also be disabled completely
  210.         ('--no-wizlist-file'), in which case __WIZLIST__ is not defined
  211.         at all (based on a patch from Elric).
  212.     - (call_out.c) Corrected a fatal refcount bug in the garbage collection
  213.         of call_outs with destructed command givers (reported by Gnomi).
  214.  
  215. 22-Jun-2001 (Lars Duening)
  216.     - (sprintf.c) Column-formatting a string with one newline
  217.          printed one newline too few if the formatstring didn't end
  218.          immediately (reported by Gnomi).
  219.  
  220. 21-Jun-2001 (Lars Duening)
  221.     - (make_func.y, lex.c) Identifier names can use the extended alpha
  222.          characters from the ISO 8859-1 alphabet (suggested by Elric).
  223.  
  224. 17-Jun-2001 (Lars Duening)  (3.2.9-dev.298)
  225.     - (backend.c) cleanup_stuff() also executes a clear_state() to
  226.          avoid dangling object references (reported by Gnomi).
  227.     - (pkg-mysql.c) Added efun db_error() to return the most recent
  228.          error string (thanks to Casey and Dafire).
  229.     - (efuns.c) If the driver is compiled with DYNAMIC_COSTS, the cost
  230.          of efun clones() is proportional to the number of objects
  231.          in the game.
  232.  
  233. 13-Jun-2001 (Lars Duening)  (3.2.9-dev.297)
  234.     - (prolang.y) Global variables can no longer be redefined (reported
  235.          by Coogan).
  236.     - (doc/efun/operators) Clarified the behaviour of (<type>) casts.
  237.     - (simulate.c, interpret.c) Normal runtime errors (and their traceback)
  238.          are no longer reported on stdout at all (reported by Tomi).
  239.     - (etc/startmud.pl) Added a simple start/keep-alive script - feel
  240.          free to improve on it (thanks, Krystal-Anne!)
  241.  
  242. 11-Jun-2001 (Lars Duening)  (3.2.9-dev.296)
  243.     - (interpret) Nifty little crasher: if the object holding the closure
  244.          currently execute is destructed, the interpreter happily tried
  245.          to free the closure after execution without noticing
  246.          that it already has been freed (as part of the object destruction
  247.          process) (reported by Freaky).
  248.  
  249. 09-Jun-2001 (Lars Duening)  (3.2.9-dev.295)
  250.     - (main.c) Improved the formatting of the language options in the
  251.          '--options' output.
  252.  
  253. 07-Jun-2001 (Lars Duening)
  254.     - (comm.c) The driver forgot that it is in noecho/charmode mode after
  255.          the second consecutive input_to call, sending out unnecessary
  256.          telnet negotiations.
  257.     - (interpret.c) When an object is destructed, all references to it
  258.          are removed from the stack - including references through
  259.          closures. Before, only direct T_OBJECT references were removed
  260.          (reported by Gnomi).
  261.  
  262. 04-Jun-2001 (Lars Duening)  (3.2.9-dev.294)
  263.     - (prolang.y) The type on function return is too strict (or the
  264.          type tracking in general too lacking) unfortunately,
  265.          so I took it out again.
  266.  
  267. 03-Jun-2001 (Lars Duening)  (3.2.9-dev.293)
  268.     - (prolang.y) A cast of a type to itself is now a no-op as it should
  269.          be (reported by Gnomi). 
  270.     - (interpret.c, prolang.y) Integers and float can now be compared
  271.          against each other (suggested by Gnomi).
  272.     - (gcollect.c) The GC forgot to trace the program->blueprint pointer
  273.          which was introduced dev.278 (reported by Coogan).
  274.  
  275. 02-Jun-2001 (Lars Duening)
  276.     - (backend.c) The check_alarm() function also restores the alarm
  277.          signal handler.
  278.     - (prolang.y) It is now possible to cast to '(mixed)'.
  279.     - (prolang.y) Improved the type tracking of '?:': it now accepts
  280.          operands of different types and evaluates to 'mixed' in that
  281.          case (reported by Dennis VanHoey)
  282.     - (prolang.y) Improved the type checking at function return under
  283.          strict_types.
  284.  
  285. 25-May-2001 (Lars Duening)
  286.     - (configure) Comments may now appear at the end of the lines in
  287.          a settings file (thanks, Bertram!).
  288.  
  289. 24-May-2001 (Lars Duening)  (3.2.9-dev.292)
  290.     - (efuns) Efun terminal_colour() can now use closures to translate
  291.          colour keys (suggested by Elric).
  292.     - (backend.c) Removing destructed objects in the process-objects
  293.          loop clobbered the list of programs to replace (reported by
  294.          Gnomi).
  295.  
  296. 22-May-2001 (Lars Duening)
  297.     - (backend.c) Efun regreplace() can now take a closure to produce
  298.          a replacement string (suggested by Fiona) (f-010516-2).
  299.  
  300. 16-May-2001 (Lars Duening)  (3.2.9-dev.291)
  301.     - (backend.c) The call to clean_up() erroreously counted the internal
  302.          blueprint-program reference to the reference count passed to the
  303.          clean_up() apply. Additionally, before the call all pending
  304.          destructed objects are removed (suggested by Elric).
  305.     - (rxcache.c) The regexp cache forgot to compare the excompat flag,
  306.          occasionally selecting the wrong regexp (thanks, Fiona).
  307.  
  308. 16-May-2001 (Lars Duening)  (3.2.9-dev.290)
  309.     - (closure.c) Of course I forgot to remove one debugging related
  310.          conditional, which effectively disabled yesterdays bugfix.
  311.  
  312. 15-May-2001 (Lars Duening)  (3.2.9-dev.289)
  313.     - (sscanf) Clarified the documentation regarding the matching of
  314.          '%s' (reported by Pulami and Gnomi)
  315.     - (closure.c) Compiling a simul_efun with extended varargs 
  316.          in a lambda closure created faulty bytecode (reported by Gnomi).
  317.  
  318. 13-May-2001 (Lars Duening)  (3.2.9-dev.288)
  319.     - (prolang.y) Undid the casting change, as it broke the idiom
  320.          's = (string)foo->bar();' where bar() may signal a failure
  321.          by returning integer 0. It's the old 0/nil dichotomy again.
  322.     - (efuns.c) Efun sscanf(): the format '%s%d' failed to parse 'ab1cd'
  323.          correctly (reported by Pulami).
  324.  
  325. 09-May-2001 (Lars Duening)  (3.2.9-dev.287)
  326.     - (prolang.y) Casting an unknown or mixed type now always inserts
  327.          a proper conversion (reported by Tomi).
  328.     - (heartbeat.c) The result for DID_ST_HBEAT_AVG_PROC was computed
  329.          as int instead of float (reported by Freaky).
  330.     - (mud/morgengrauen) Added basic support for the MorgenGrauen 3.2.6
  331.          mudlib.
  332.  
  333. 08-May-2001 (Lars Duening)
  334.     - (prolang.y) The expression 'a & b' failed to track the types if one
  335.          of the operands was of TYPE_ANY (reported by Gnomi).
  336.  
  337. 06-May-2001 (Lars Duening)
  338.     - (interpret.c) Added a protection against simple reference loops
  339.          as created by 'b = 0 || &a; b = 0 || &a;' (reported by Gnomi).
  340.  
  341. 28-Apr-2001 (Lars Duening)  (3.2.9-dev.286)
  342.     - (several files) Added modifications for the Amiga/gcc port
  343.          (provided by Niels).
  344.  
  345. 27-Apr-2001 (Lars Duening)  (3.2.9-dev.285)
  346.     - (sprintf.c) Duh. A typo caused '%^' to eat the next character
  347.          from the format string (reported by Robert).
  348.     - (sprintf.c) A leading '0' used to pad the whole field with 0s.
  349.          Now, only leading 0s are printed and this setting and the
  350.          explicite pad string are independent of each other (suggested
  351.          by Fiona).
  352.     - (call_out.c) Removing call_outs, or call_outs going stale, messed
  353.          up the 'number of callouts' statistics (provided by Gnomi).
  354.  
  355. 25-Apr-2001 (Lars Duening)  (3.2.9-dev.284)
  356.     - (prolang.y) Pre-increment or -decrement failed to terminate
  357.          the parser reduction, causing an internal fatal error when the
  358.          result was used somewhere (reported by Dafire).
  359.  
  360. 24-Apr-2001 (Lars Duening)  (3.2.9-dev.283)
  361.     - (efuns.c) Efun sgn() used on negative integers still returned +1 -
  362.          a simple typo (thanks, Fiona!).
  363.  
  364. 23-Apr-2001 (Lars Duening)
  365.     - (func_spec) Efun copy_mapping() is deprecated.
  366.  
  367. 22-Apr-2001 (Lars Duening)  (3.2.9-dev.282)
  368.     - (interpret.c) When using a multi-dimensional allocate(), specifying
  369.          0-sized dimensions could crash the driver (reported by Menaures).
  370.     - (Makefile.in) When doing 'make install', the driver is now installed
  371.          as 'driver', not 'parse' (reported by Eivind).
  372.     - (docs) Some corrections, provided by Fiona.
  373.     - (closure.c) The generation of sparse lookup ranges failed to properly
  374.          generate default-jumps for the values between two consecutive
  375.          ranges (e.g. 'case -2..-1:, case 1..2:' was smudged into 'case -2..1:
  376.          case 0..2:') (reported by Menaures).
  377.  
  378. 19-Apr-2001 (Lars Duening)  (3.2.9-dev.281)
  379.     - (configure, main.c, simulate, call_out.c) Runtime for the total
  380.          number of callouts, settable with commandline option
  381.          '--max-callouts'.
  382.  
  383. 17-Apr-2001 (Lars Duening)  (3.2.9-dev.280)
  384.     - (prolang.y) Redefining an inherited private heart_beat() didn't work:
  385.          the new heart_beat() wasn't called (reported by Gnomi).
  386.     - (rxcache.c) The status functions were far too slow, because they
  387.          counted the number of entries on each call (reported by Sissi).
  388.     - (prolang.y) Function calls can distinguish between variables and
  389.          functions of the same name (suggested by Gnomi).
  390.  
  391. 16-Apr-2001 (Lars Duening)  (3.2.9-dev.279)
  392.     - (interpret.c) The call to privilege_violation() for efun call_out_info()
  393.          passed some random data instead of constant 0 as argument
  394.          (reported by Freaky).
  395.  
  396. 13-Apr-2001 (Lars Duening)
  397.     - (simulate.c) Made the 'illegal object to load' error message
  398.          more informative (suggested by Freaky).
  399.  
  400. 12-Apr-2001 (Lars Duening)
  401.     - (sprintf.c) The formatter "%^" will print "%^" for compatibility
  402.          with terminal_colour().
  403.     - (closure.c, array.c) Introduced a total order on closure svalues
  404.          which allows their use in alists and array operations like
  405.          intersection. The same could be done for their use in mappings,
  406.          but that change is too big to be squeezed into 3.2.9 (reported
  407.          by Gnomi).
  408.  
  409. 11-Apr-2001 (Lars Duening)  (3.2.9-dev.278)
  410.     - (prolang.y) Additions of floats to constant 0 yielded TYPE_ANY
  411.          instead of TYPE_FLOAT.
  412.     - (interpret.c) Arguments passed to runtime_error() were wrong
  413.          if the error happened in a master apply (reported by Gnomi).
  414.  
  415. 10-Apr-2001 (Lars Duening)
  416.     - (exec.h, prolang.y, simulate.c) The program structure received
  417.         a pointer pointing to the blueprint object. Main purpose is to 
  418.         allow the cheap deep update of the master object, but other
  419.         uses will probably show up as well.
  420.     - (simulate.c) Added function deep_destruct() to destruct an
  421.         object and the blueprints of all inherited programs.
  422.     - (backend.c, interpret.c) The signal SIGUSR1 now destructs the
  423.         master object and all its inherits, to allow a clean reload.
  424.  
  425. 07-Apr-2001 (Lars Duening)  (3.2.9-dev.277)
  426.     - (smalloc.c) The multiple-of allocation was not quite correct.
  427.  
  428. 06-Apr-2001 (Lars Duening)  (3.2.9-dev.276)
  429.     - (md5.c) Removed a compiler warning.
  430.     - (smalloc.c) On Darwin, we get the memory from the system only
  431.         in multiples of 64 Bytes, which caused the creation of too-small
  432.         large blocks. Fixed that.
  433.  
  434. 05-Apr-2001 (Lars Duening)  (3.2.9-dev.275)
  435.     - (actions.c) If an action doesn't have a verb defined, the error
  436.         will list the object which created the action (suggested by Gnomi).
  437.  
  438. 04-Apr-2001 (Lars Duening)  (3.2.9-dev.274)
  439.     - (Makefiles) Corrected.
  440.     - (efuns, md5) New efun md5_encrypt() (thanks, Gawain!)
  441.     - (interpret.c) Assigning a volatile strings sometimes crashed due
  442.         to a faulty length computation (reported by Gnomi and Parsec!)
  443.     - (lex.c) An attempt to '(: ;} fun() {... :)' is now detected and
  444.         rejected (reported by Daniel Fischer).
  445.  
  446. 03-Apr-2001 (Lars Duening)  (3.2.9-dev.272, -dev.273)
  447.     - (lex) Corrected a bug in yesterday's change.
  448.     - (doc/efun) Removed references to deprecated efuns.
  449.     - (erq, xerq) Fixed (hopefully) a type mismatch under Darwin.
  450.     - (make_func, lpc parser) Wrapped the parser into wrappers which
  451.          selectively define 'lint' to suppress spurious warnings, and
  452.          under Darwin enable compilation in the first place.
  453.  
  454. 02-Apr-2001 (Lars Duening)  (3.2.9-dev.271)
  455.     - (lex) When generating names for inline closures, the compiler
  456.         makes sure that the name hasn't been used yet (reported by Dan).
  457.  
  458. 30-Mar-2001 (Lars Duening)
  459.     - (lex.c) The include path and filenames returned by the master the
  460.         and H_INCLUDE_DIRS closure can now start with leading slashes
  461.         (suggested by DaFire).
  462.     - (xerq) The incoming data buffer is cleared before each new command,
  463.         in order to detect errors more easily (suggested by Gawain).
  464.     - (comm.c) When using charmode against non-charmode clients (TinyFugue),
  465.         the line end wasn't handled properly. The solution is to receive
  466.         the data in charmode, but to pass it on to the user as if in
  467.         linemode.
  468.  
  469. 27-Mar-2001 (Lars Duening)
  470.     - (interpret.c) All <op>= assignment operators can now operate on a
  471.         char lvalue (indexed string) on the left hand side.
  472.  
  473. 20-Mar-2001 (Lars Duening)  (3.2.9-dev.270)
  474.     - (erq, xerq/execute.c) Quoted arguments are recognized and not split into
  475.         words (provided by Christian W., thanks!)
  476.     - (backend.c) The no-var-swapping time before a reset() is limited to
  477.         5 minutes max, otherwise a lot of muds will never swap variables.
  478.     - (array.c) A correction to the correction to functionlist() (thanks,
  479.         Fiona!).
  480.     - (func_spec, interpret.c) Efun allocate() now accepts an initialisation
  481.         value (f-981229-09a).
  482.     - (configure.in) When using mySQL, the script also checks for and links
  483.         in the libz (reported by Bardioc).
  484.  
  485. 16-Mar-2001 (Lars Duening)  (3.2.9-dev.269)
  486.     - (pkg-mysql.c) Dafire provided to new mySQL efuns: db_insert_id()
  487.         and db_coldefs() - thanks!.
  488.     - (array.c) The list control for functionlist() was documented
  489.         incorrectly, and also functioned incorrectly (thanks, Fiona!).
  490.  
  491. 15-Mar-2001 (Lars Duening)  (3.2.9-dev.268)
  492.     - (settings/unitopia) Updated (thanks, Freaky!).
  493.     - (comm.c) The pathlength safety check in the start-erq-demon routine
  494.         was too cautious (thanks, Freaky).
  495.     - (mudlib/dhrystone.c) Added a missing assignment.
  496.     - (xerq/Makefile.in) Accidentally left the XDEBUG option enabled.
  497.     - (comm.c) A prompt closure bound to a destructed object is detected
  498.         and restored to the default prompt. An error is still thrown, to
  499.         give the mudlib hackers something to do.
  500.     - (pkg-mysql.c) The version check did not really work (thanks, Dafire!).
  501.  
  502. 14-Mar-2001 (Lars Duening)  (3.2.9-dev.267)
  503.     - (main.c, comm.c) The command option '--erq' can now be used to
  504.         specify the full pathname of the erq executable (suggested 
  505.         by Freaky).
  506.     - (comm.c) Before printing a prompt via a closure, the current object
  507.         is set to the command giver. This avoids a crash under (admittedly
  508.         rare) circumstances of closure destruction.
  509.  
  510. 13-Mar-2001 (Lars Duening)  (3.2.9-dev.266)
  511.     - (dumpstat.c, gcollect.c) Added uses of StrRefCount where I forgot
  512.         them earlier (thanks, Freaky!)
  513.     - (backend.c) When calling the master apply slow_shut_down(), it is
  514.         made sure that previous_object(), this_player(), and
  515.         this_interactive() are all 0 (reported by Freaky).
  516.     - (comm.c, ed.c, interpret.c, simulate.c) Removed spurious checks
  517.         for out-of-memory condition. While the intention is noble, it hasn't
  518.         been implemented consequently enough to be of any use.
  519.     - (comm.c) If a CRLF as expansion of a NL character was to be inserted,
  520.          but only one character was left in the buffer, the code errorneously
  521.          detected a 'message shorter than minimum, needs not be send'
  522.          condition, thus swallowing all following characters after the NL.
  523.     - (interpret.c) Argl. Letting the ==/!= comparison for floats fall through
  524.          to the all new and improved closure comparison was not a good idea
  525.          (reported by Gnomi and Freaky).
  526.  
  527. 12-Mar-2001 (Lars Duening)  (3.2.9-dev.265)
  528.     - (pkg-mysql.c) db_connect() optionally takes a username and a password
  529.         (thanks, Andre!)
  530.  
  531. 09-Mar-2001 (Lars Duening)  (3.2.9-dev.264)
  532.     - (mud/lp-245) Small corrections.
  533.     - (configure) Another define for 'void' signal return types - this one
  534.         can be tested directly, as a comparison of the values of RETSIGTYPE
  535.         is not portable.
  536.  
  537. 05-Mar-2001 (Lars Duening)  (3.2.9-dev.263)
  538.     - (smalloc.c) Corrected a statistics error (reported by Freaky).
  539.     - (simulate, interpret, efuns.c) Added the last error trace as
  540.         possible return from debug_info(DINFO_TRACE) (suggested by Gnomi).
  541.  
  542. 04-Mar-2001 (Lars Duening)  (3.2.9-dev.262)
  543.     - (interpret.c) Removed a VM stack leak in ++/-- on floats (reported
  544.          by Dafire).
  545.     - (object.c) The previous object for object resets is this_object()
  546.          (reported by Gnomi).
  547.     - (Makefiles) Added 'lint' to the compiler defines to ensure a smooth
  548.          compilation of prolang.y.
  549.  
  550. 28-Feb-2001 (Lars Duening)  (3.2.9-dev.261)
  551.     - (backend.c) Simplified the error message output in write_file().
  552.     - (simulate.c) The master apply runtime_error() receives an extra
  553.          argument describing if the error is a normal error, or occured
  554.          during a heartbeat (suggested by Freaky).
  555.     - (func_spec) Efuns add_verb() and add_xverb() are now part of the
  556.          deprecated bunch.
  557.     - (gcollect.c) Added a dump function for closure literals.
  558.  
  559. 27-Feb-2001 (Lars Duening)
  560.     - (lex.c, gcollect.c) Cosmetics.
  561.     - (smalloc.c, main.c) xfree() now accepts NULL pointers. Allocation of
  562.          MIN_(SMALL_)MALLOCED blocks actually check if the memory is
  563.          allocated (reported by Freaky).
  564.     - (main.c, backend.c, interpret.c) Swapping is no longer an optional
  565.          feature, though it still can be disabled by specifying swapping
  566.          times of 0.
  567.     - (configure.in, main.c, xalloc) New commandline options '--min-malloced'
  568.          and '--min-small-malloced' to complement the configuration options
  569.          (suggested by Freaky).
  570.     - (hosts/win32) Updated the various files with those provided by
  571.          Coogan (thanks!)
  572.  
  573. 26-Feb-2001 (Lars Duening)
  574.     - (smalloc) Renamed the constant MASK to M_MASK, as MASK seems to clash
  575.          with one of Darwin's symbols.
  576.     - (smalloc.h) svalue_strlen() did not use StrRefCount in all the places
  577.          it should be used (reported by Freaky).
  578.  
  579. 22-Feb-2001 (Lars Duening)  (3.2.9-dev.260)
  580.     - (func_spec, efuns) The efuns debug_info() and object_info() can now
  581.          return single values instead of whole arrays.
  582.     - (backend, comm.c) Added a check method which restarts the alarm
  583.          after some time of activity. This is required at least for
  584.          Cygwin on Windows, where the alarm often gets lost (thanks, Holger!).
  585.     - (interpret.c) The master apply valid_trace() now receives as second
  586.          argument the argument passed to the efun (suggested by Coogan).
  587.     - (typedefs.h, interpret.c, gcollect.c, stralloc, smalloc.h) Introduced the
  588.         type StrRefCount for the shared string refcounts. This will make it
  589.         easier to switch from 16-Bit to 32-Bit refcounts (after 3.2.9
  590.         has been released, since it should undergo some more testing)
  591.         (p-010208).
  592.     - (lex.c, prolang) Inline closure 'inherit' the visibility modifiers
  593.         of their defining function (suggested by Coogan).
  594.     - (smalloc.c) Corrected an accounting error in consolidate_freelists().
  595.  
  596. 21-Feb-2001 (Lars Duening)  (3.2.9-dev.259)
  597.     - (autoconf/configure.in) Some more small fixes.
  598.     - (prolang.y) Recognize an inherited heart_beat() only if it is visible
  599.          (adopted from Morgengrauen).
  600.     - (efuns.c) debug_info(DINFO_DATA, DID_STATUS) now returns the number
  601.          of executed heartbeats as well as the total number of heartbeats.
  602.     - (settings/morgengrauen) New configuration file.
  603.  
  604. 20-Feb-2001 (Lars Duening)  (3.2.9-dev.258)
  605.     - (autoconf/configure.in) Corrected some replacement directives.
  606.     - (func_spec) Removed two duplicate efun definitions which caused
  607.         Cygwin compiles to hang.
  608.     - (make_func.y, lex.c) Added diagnostics to detect duplicate efun
  609.         and string definitions.
  610.     - (autoconf/configure.in) The option --enable-use-mysql now also
  611.         accepts a directory path under which the libmysqlclient can be
  612.         found (f-000918).
  613.  
  614. 16-Feb-2001 (Lars Duening)  (3.2.9-dev.256 and -dev.257)
  615.     - (main.c) Added code to unblock SIGALRM on program start - on systems
  616.         it is blocked randomly for no obvious reason (thanks, Fini!)
  617.         (maybe fixes b-000308)
  618.     - (efuns, func_spec) New efun sgn() to retrieve the sign of a numeric
  619.         argument (suggested by Croft).
  620.  
  621. 13-Feb-2001 (Lars Duening)
  622.     - (lots of files) New configuration option 'use-deprecated' allows
  623.         to disable obsolete and deprecated efuns. If enabled, the macro
  624.         __DEPRECATED__ is defined (suggested by Coogan).
  625.     - (lots of files) The UDP port is now a standard feature. The
  626.         option has been renamed from 'catch_udp_port' to just 'udp_port'.
  627.     - (lots of files) The UDP efuns have been renamed from send_imp()
  628.         and query_imp_port() to send_udp() and query_udp_port(); as were
  629.         the associated privilege violation string and the master apply.
  630.         The old names are still available with USE_DEPRECATED.
  631.  
  632. 12-Feb-2001 (Lars Duening)
  633.     - (interpret.c) Assigning volatile strings was somehow no longer
  634.         supported under all circumstances (reported by Gnomi).
  635.  
  636. 07-Feb-2001 (Lars Duening)  (3.2.9-dev.255)
  637.     - (smalloc.c) Removed a compilation error (reported by Coogan).
  638.  
  639. 06-Feb-2001 (Lars Duening)
  640.     - (strfuns.c) When (re)allocating the strbuf buffer, the length was
  641.         accidentally casted down to unsigned short, causing the program
  642.         to write outside the allocated memory (reported by Sebastian).
  643.  
  644. 05-Feb-2001 (Lars Duening)
  645.     - (smalloc.c) Using the time_stamp() from within the allocation routines
  646.         was really stupid.
  647.     - (smalloc.c) The large block allocator had an off-by-one error which
  648.         left free large blocks of 'small' size behind. These blocks could
  649.         never be allocated, just merged again.
  650.     - (smalloc.c) The routine to split largish free small blocks was faulty,
  651.         causing coredumps.
  652.     - (parse_old.c) Expanded the list of hard coded prepositions.
  653.     - (lex.c) Added new standard predefine __LDMUD__, expanding to an empty
  654.         string.
  655.     - (settings/heaven7, mud/heaven7/) Added basic support for Heaven7: you can
  656.         boot the mud and log in. There are probably still errors in the
  657.         areas.
  658.  
  659. 31-Jan-2001 (Lars Duening)
  660.     - (interpret.c) Attempts to set a single string character to 0
  661.         are now caught with a runtime error (reported by Nico).
  662.     - (func_spec) The result of set_prompt() can be a string or a closure,
  663.         yet it was declared to return only string (reported by Gnomi).
  664.     - (prolang.y) The type tracking for multiplication returned an 'int'
  665.         result even for 'mixed' operands (reported by Gnomi).
  666.     - (interpret.c) The relations '==' and '!=' can now compare lfun-
  667.         and variable closures (suggested by Gnomi).
  668.     - (func_spec, efuns) New efuns min() and max().
  669.  
  670. 30-Jan-2001 (Lars Duening)
  671.     - (configuration, smalloc.c) Added a new config parameter
  672.         MIN_SMALL_MALLOCED which defines the size of the first small chunk
  673.         allocated by the system.
  674.     - (xerq) With ERQ_FORK started subprocesses are now as well handled
  675.         with a child_t structure. While not exactly necessary, it allows
  676.         for useful diagnostics in the sig_child() handler (reported by
  677.         Freaky).
  678.     - (dumpstat, efuns.c) The internal data measuring routines now return
  679.         both the total data size, as well as the data size scaled down
  680.         according to the extend of data sharing. The results are also
  681.         returned by object_info(OI_MEMORY) (suggested by Freaky).
  682.  
  683. 26-Jan-2001 (Lars Duening)  (3.2.9-dev.254)
  684.     - (smalloc.c) Introduced a free list for 'oversized' small blocks which
  685.         is used much like the unused space in a small chunk. This list
  686.         allows the consolidation function to keep large free blocks
  687.         together even if they exceed the legal maximum size for small
  688.         blocks.
  689.  
  690. 25-Jan-2001 (Lars Duening)
  691.     - (smalloc, gcollect.c) New function consolidate_freelists() to
  692.         rebuild the small block free lists, merging adjacent free small
  693.         blocks where possible. Additionally, when a small chunk is exhausted
  694.         the small block allocator first tries to split one of the larger
  695.         free blocks before getting a new small chunk.
  696.  
  697. 25-Jan-2001 (Lars Duening)  (3.2.9-dev.253)
  698.     - (xerq/execute.c) Corrected some small bugs (thanks, Freaky!)
  699.  
  700. 24-Jan-2001 (Lars Duening)
  701.     - (port.c) The time_stamp routines recompute the string result only
  702.         if the time has changed since the last call.
  703.     - (efuns.c, smalloc.c) smalloc now keeps a statistic about the number
  704.         and size of permanent and clib allocations; and debug_info()
  705.         returns this statistics as part of (DINFO_DATA, DID_MEMORY).
  706.     - (smalloc.c) Defining the macro DEBUG_SMALLOC_ALLOCS causes smalloc
  707.         to log all new allocations which can't be satisfied directly
  708.         from the free lists. The output is written to the same stream
  709.         as the GC log (default is stderr).
  710.  
  711. 19-Jan-2001 (Lars Duening)  (3.2.9-dev.252)
  712.     - (main.c) Change to the default MUD_LIB directory early, so that the
  713.         debug.log file is opened in the right place (reported by Elric).
  714.     - (xerq) The parent now synchronizes with the child by sending a specific
  715.         byte of data.
  716.     - (pkg-mysql.c) Markus Peter provided a patch for backwards compatibility
  717.         with mySQL before 3.22.24.
  718.     - (main, comm.c) The name of the erq executable can now be given on the
  719.         commandline with the option '--erq <filename>' (suggested by Freaky).
  720.  
  721. 18-Jan-2001 (Lars Duening)
  722.     - (comm.c) In efun exec(), if this_interactive() points to one of the
  723.         the involved objects, it is switched over as well, like this_player()
  724.         already is (reported by Elric).
  725.     - (xerq) Freaky found and corrected a couple race conditions in the
  726.         clean-up loops of socket and children.
  727.     - (backend.c) Efun debug_message() now allows to preprend the message
  728.         with a timestamp for the current date and time, controlled by
  729.         a new bitflag (suggested by Freaky).
  730.  
  731. 17-Jan-2001 (Lars Duening)
  732.     - (xerq) Added additional diagnostic output, activated with compiler
  733.         option XDEBUG. Also, removed two uninitialized variables (the stdout/
  734.         stderr sockets in the child_t structure) in the handling of child
  735.         processes, and added measures against buffer overflows.
  736.  
  737. 16-Jan-2001 (Lars Duening)
  738.     - (erq.c, xerq/socket.c) When closing the connection to a child
  739.         process, the erq makes sure to read all still remaining data
  740.         from the connection (reported by Freaky).
  741.  
  742. 21-Dec-2000 (Lars Duening)  (3.2.9-dev.251)
  743.     - (comm.c) If the driver received only a NL in charmode, the first
  744.         following character was ignored.
  745.  
  746. 21-Dec-2000 (Gnomi)
  747.     - (comm.c) Found and corrected a problem concerning the use
  748.         of CHARMODE with Windows' telnet: the charmode negotiation were
  749.         considere a failure too early, and moreover the CHARMODE_REQ flag was
  750.         reset without adjusting the input buffer variables. Unfortunately
  751.         this re-opens b-000818. (b-001214)
  752.     - (comm.c) Clients sending CRLF in Charmode instead of just CR
  753.         are now handled properly: the LF is ignored like the NUL in CR NUL
  754.         already is. This also re-fixes b-000818.
  755.     - (comm.c) When receiving DONT ECHO or WONT SGA, the check for if
  756.         the option has already been granted was wrong.
  757.     - (comm.c) After a charmode input_to() has been received, the driver
  758.         did not properly reset the text pointers, causing !-escaped
  759.         commands to go unrecognized.
  760.  
  761. 20-Dec-2000 (Lars Duening)  (3.2.9-dev.250)
  762.     - (comm.c, interpret.c) More small corrections to the new telnet
  763.         error reporting.
  764.     - (func_spec, backend.c) Extended the efun debug_message() to take
  765.         a parameter telling where to log the message (suggested by Freaky).
  766.  
  767. 19-Dec-2000 (Lars Duening)  (3.2.9-dev.249)
  768.     - (mudlib/floattest.c) Unfortunately this code was a derivate of
  769.         a copyrighted program from Numerical Recipes, and therefore can't be
  770.         distributed legally.
  771.     - (lex.c) On solaris, strtod() does not clear errno after a successful
  772.         conversion, causion spurious warnings (reported by Coogan).
  773.     - (main.c) The driver version is now also printed in the .debug.log
  774.         file on startup.
  775.     - (comm.c) A bug in the comm_fatal() routine caused the driver to
  776.         abort on the second call to it. Oops. (reported by Gnomi and
  777.         Freaky)
  778.  
  779. 15-Dec-2000 (Lars Duening)  (3.2.9-dev.248)
  780.     - (comm, simulate.c) When the telnet machine for a player gets into
  781.         an inconsistent state, the driver no longer aborts. Instead, the
  782.         player's interactive structure is dumped to stderr, and then
  783.         removed the hard way.
  784.     - (regexp.c) Added the metacharacter '+' (match at least once'
  785.         to the regexp code (provided by Terry Penn, thanks!).
  786.     - (mudlib/floattest) This LPC program computes the floating point
  787.         characteristics; it can be called from the test_master (provided
  788.         by Croft, thanks!)
  789.  
  790. 14-Dec-2000 (Lars Duening)  (3.2.9-dev.247)
  791.     - (lex.c) Octal numbers are now prefixed by '0o' - it's cleaner
  792.         and avoids compatibility problems with existing code.
  793.  
  794. 12-Dec-2000 (Lars Duening)  (3.2.9-dev.246)
  795.     - (interpret.c) Omitting a check_map_for_destr() in a mapping addition
  796.         caused data in a wiz_info mapping to mysteriously disappear (thanks,
  797.         Coogan) (b-001204).
  798.  
  799. 10-Dec-2000 (Lars Duening)  (3.2.9-dev.245)
  800.     - (prolang.y) The result type for '++map[mixed]' was computed
  801.         incorrectly (reported by Freaky).
  802.     - (comm.c) If an error occurs on accept(), the driver no longer abort()s
  803.         but prints a better error message.
  804.  
  805. 06-Dec-2000 (Lars Duening)  (3.2.9-dev.244)
  806.     - (lots of files) Closures bound to destructed objects are now treated
  807.         like destructed objects and zeroed out where possible.
  808.     - (wiz_list) Destructed objects and closures is now removed from the
  809.         'extra' wizinfo in regular intervals. Note that this doesn't
  810.         extend to subarrays and -mappings held by the 'extra' info.
  811.  
  812. 06-Dec-2000 (Lars Duening)  (3.2.9-dev.243)
  813.     - (autoconf/configure.in, configure) If MySQL or IPv6 are not requested,
  814.         the configure script won't check for the libraries; consequently
  815.         they won't linked in unless needed (suggested by Coogan).
  816.     - (interpret.c, prolang.y) The operators '++' and '--' can now be
  817.         used on floats, too (suggested by Croft).
  818.  
  819. 04-Dec-2000 (Lars Duening)
  820.     - (interpret.c) sqrt(0.0) caused a 'bad argument' error - corrected
  821.         that (thanks, Andre!).
  822.  
  823. 30-Nov-2000 (Lars Duening)  (3.2.9-dev.242)
  824.     - (interpret, efuns.c) debug_info(DINFO_TRACE) returns the current
  825.         call stack as either string or array. (f-000716)
  826.  
  827. 29-Nov-2000 (Lars Duening)
  828.     - (interpret.c) The efuns sin(), cos(), tan(), atan(), atan2(),
  829.         log(), exp(), sqrt() and pow(), when given an integer argument,
  830.         returned a float result typed as integer. (reported by Slava)
  831.  
  832. 28-Nov-2000 (Lars Duening)  (3.2.9-dev.241)
  833.     - (lex.c) Oops, a last minute change to remove a warning broke the
  834.          recognition of escaped characters in strings (thanks, Slava!).
  835.  
  836. 27-Nov-2000 (Lars Duening)
  837.     - (interpret.c) Efun pow() did not properly check its arguments.
  838.  
  839. 27-Nov-2000 (Lars Duening)  (3.2.9-dev.240)
  840.     - (lex.c) Numbers can be specified in binary using the '0b' prefix.
  841.     - (lex.c) Moved the parsing of escaped character sequences into a
  842.          separate function, and implemented the specification of characters
  843.          through their numeric code (expressed in decimal, octal, sedecimal
  844.          and binary). (f-990203-04)
  845.  
  846. 26-Nov-2000 (Lars Duening)  (3.2.9-dev.239)
  847.     - (closure.c) Implemented catch-nolog as '({#'catch, <body>, 'nolog })'.
  848.  
  849. 21-Nov-2000 (Lars Duening)
  850.     - (prolang) Folded catch() and catch_nolog() back into one catch(),
  851.         distinguished by the keyword 'nolog'.
  852.  
  853. 18-Nov-2000 (Lars Duening)
  854.     - (func_spec, interpret.c) The efuns sin(), cos(), tan(), atan(), atan2(),
  855.         log(), exp(), sqrt() and pow() now accept integers as arguments, too.
  856.         The results remain float. (suggested by Croft).
  857.     - (interpret.c, mapping.c) When testing for a 'mapping too large' condition
  858.         on mapping addition or element assignment, it is made sure that all
  859.         invalid keys have been removed. (reported by Fiona)
  860.     - (func_spec, lex.c, interpret.c, simulate, prolang.y) New language
  861.         construct catch_nolog() as alternative to catch(): the new statement
  862.         doesn't log the error in the driver logfiles (thanks, Michael!)
  863.         (p-990901).
  864.     - (lots of files) The mode of the driver (plain or compat) can now be
  865.         selected with the commandline options '--no-compat' resp. '--compat'.
  866.         The default is still selected during configuration. (f-981229-00)
  867.  
  868. 17-Nov-2000 (Lars Duening)
  869.     - (mudlib/sys, doc/) Small corrections (thanks, Coogan!).
  870.  
  871. 15-Nov-2000 (Lars Duening)
  872.     - (mudlib/telnet_neg.txt) Added Slava's example on telnet negotiation,
  873.          which includes a means of measuring lag using TMs (thanks!).
  874.  
  875. 15-Nov-2000 (Lars Duening)  (3.2.9-dev.238)
  876.     - (efuns.c) The OIB_NAME returned by object_info(OINFO_BASIC) did
  877.          not start with a '/' in plain mode. (reported by Fiona)
  878.     - (mud/lp-245) Added secure/master.c as a wrapper for obj/master.c for
  879.          use with plain drivers.
  880.     - (func_spec, interpret.c, port) Added new efun utime() (provided by
  881.          Slava) and adapted ctime() to accepts its output.
  882.     - (settings/unitopia) Updated with new version provided by Freaky.
  883.     - (settings/default) Clean up.
  884.  
  885. 14-Nov-2000 (Lars Duening)
  886.     - (strfuns, actions.c, ed.c, efuns.c, interpret.c, swap.c, wiz_list.c)
  887.          New function xstrncpy() to copy a string up to a certain length, but
  888.          without adding extra 0 padding if the string is shorter than the
  889.          given length.
  890.  
  891. 07-Nov-2000 (Lars Duening)  (3.2.9-dev.237)
  892.     - (efuns.c) object_info(OINFO_MEMORY) also returns the program flags
  893.          NO_SHADOW, NO_CLONE and NO_INHERIT.
  894.     - (pkg-mysql.c) Small bugfix (thanks, Michael!)
  895.     - (settings/forgottendreams) Updated according to Michael.
  896.     - (util/[x]erq/erq.h) Around dev.220 I accidentally broke 
  897.          compatibility with older erq binaries by renumbering the KEEP_HANDLE
  898.          constant - fixed that now. (reported by Coogan)
  899.  
  900. 05-Nov-2000 (Lars Duening)
  901.     - (interpret.c) call_resolved() now accepts a destructed object as
  902.          second argument and returns 0 instead of throwing an error.
  903.          (reported by Coogan)
  904.     - (settings/tubmud) 'nosave' is now on by default.
  905.  
  906. 03-Nov-2000 (Lars Duening)  (3.2.9-dev.236)
  907.     - (interpret.c) When setting up the frame for a function, resolve a
  908.          possible cross-definition first. (b-000616, b-001004)
  909.     - (interpret.c, prolang.y) Right shifts of 32 or more are now properly
  910.          defined.
  911.  
  912. 02-Nov-2000 (Lars Duening)  (3.2.9-dev.235)
  913.     - (mapping.c) Adding two mappings of different width throws an error
  914.          (reported by Holger and Fiona). (b-001010)
  915.  
  916. 01-Nov-2000 (Lars Duening)
  917.     - (regexp.c) Added a patch by Marcus Meissner to make regexp more compatible
  918.          with 8-bit characters (thanks!).
  919.  
  920. 23-Oct-2000 (Lars Duening)
  921.     - (simulate, interpret) Moved the catch_instruction() function into
  922.          simulate to keep aggressive optimizers from over-optimizing this
  923.          function. I hope this finally cures the catch() related crashes.
  924.          (thanks, Coogan!) (b-001010-1)
  925.  
  926. 16-Oct-2000 (Lars Duening)
  927.     - (simulate, array.c, call_out.c, comm.c, mapping.c) Callbacks now accept
  928.          protected lvalues as arguments only if they are called just once.
  929.          Reason is that the protectors don't count references: at the first
  930.          return from a callback the lvalue would be freed even though it
  931.          is still needed.
  932.          (b-001002)
  933.  
  934. 12-Oct-2000 (Lars Duening)
  935.     - (main.c) New driver option '--pidfile <filename>' to write the
  936.          pid of the driver into a file (suggested by Freaky).
  937.  
  938. 10-Oct-2000 (Lars Duening)
  939.     - (backend.c) The IGNORE_BANG option to efun input_to() didn't
  940.          work (provided by Casey, thanks!).
  941.     - (pkg-mysql.c) Changed some xalloc()s into pxalloc()s to protect them
  942.          against the GC (provided by Michael Fedrowitz, thanks!).
  943.     - (interpret.c) Cosmetics to the traceback output (thanks, Coogan).
  944.     - (simulate.c) A semicolon was missing (thanks, Christian B.).
  945.  
  946. 13-Sep-2000 (Lars Duening)   (3.2.9-dev.234)
  947.     - (func_spec, lex.c, closure.c, interpret.c, prolang.y) Added the
  948.          operators '>>>' and its cousin '>>>=' for logical right shifts.
  949.  
  950. 11-Sep-2000 (Lars Duening)
  951.     - (configure) Removed no longer used option 'max-log-size' (reported
  952.          by Malcom).
  953.  
  954. 09-Sep-2000 (Lars Duening)  (3.2.9-dev.233)
  955.     - (simulate.c) Callbacks in efuns like filter() can now take references,
  956.          too (reported by Freaky).
  957.  
  958. 07-Sep-2000 (Lars Duening)  (3.2.9-dev.232)
  959.     - (simulate, call_out) Due to a flag inversion, call_out() was unable
  960.          to take lvalues as arguments. It also gave the error message
  961.          with an off argument count (reported by Thorsten).
  962.  
  963. 06-Sep-2000 (Lars Duening)
  964.     - (interpret) The setjmp() for a catch() instruction has been moved into
  965.          its own stack frame and eval_instruction() is called recursively
  966.          on the guarded code. This seems to prevent failures and cores
  967.          when using gcc as compiler, and doesn't hurt on other platforms
  968.          either (reported by Parsec).
  969.  
  970. 05-Sep-2000 (Lars Duening)
  971.     - (xerq/socket.c) A faulty comparison caused the xerq to ignore
  972.          SOCKET_STDERR and send everything on stdout (thanks, Fiona!).
  973.  
  974. 30-Aug-2000 (Lars Duening)  (3.2.9-dev.231)
  975.     - (comm.c) The driver did not fully recover from a failed INPUT_CHARMODE
  976.          notification - treating the input as in charmode even after the
  977.          failure. (b-000818)
  978.  
  979. 29-Aug-2000 (Lars Duening)
  980.     - (interpret.c) When reactivating a destructed master, the function
  981.          applies failed to find static functions, even though all other
  982.          master applies do (thanks, Daniel!)
  983.  
  984. 28-Aug-2000 (Lars Duening)  (3.2.9-dev.230)
  985.     - (pkg-mysql.c, configure, Makefile.in) Made the mySQL code work again.
  986.          Additionally the mysqlclient library is now part of the @PKGLIBS@
  987.          template in Makefile.in, so that utils like xerq don't have to
  988.          link it in. (thanks, Michael!)
  989.  
  990. 25-Aug-2000 (Lars Duening)  (3.2.9-dev.229)
  991.     - (xerq/lookup.c) In the IPv6 lookup, a buffer was freed twice.
  992.          (found by Uwe and Fiona).
  993.     - (pkg-mysql, doc/..., INSTALL) Integrated the mySQL efuns into the
  994.          driver proper. They are activated on suitable hosts with the
  995.          configuration switch 'use-mysql' and, when activated, define
  996.          the macro '__MYSQL__' in LPC programs.
  997.     - (lex.c) Added new LPC defines __VERSION_MAJOR__, ..._MINOR__,
  998.          ..._MICRO__ and ..._PATCH__ do exactly what you expect.
  999.  
  1000. 24-Aug-2000 (Lars Duening)  (3.2.9-dev.228)
  1001.     - (INSTALL) Added compilation notes provided by Bruce (thanks!)
  1002.     - (xerq/erq.c) The DEBUG part was missing the data to generate proper
  1003.          error messages for RLOOKUPV6 requests (reported by Fiona).
  1004.     - (comm.c) Removed two warnings.
  1005.  
  1006. 23-Aug-2000 (Lars Duening)  (3.2.9-dev.227)
  1007.     - (util/indent/, autoconf/configure.in) The Makefile is now under
  1008.         configure control, and I removed a couple of warnings.
  1009.     - (util/erq/erq.c) Oops, the check for HAVE_SYS_TIME came before
  1010.         machine.h was included, so it couldn't work (reported by Betram
  1011.         and Fiona).
  1012.  
  1013. 22-Aug-2000 (Lars Duening)  (3.2.9-dev.226)
  1014.     - (hash, stralloc) Changed a few parameters from 'char*' to 'const char*'.
  1015.     - (comm.c, erq, xerq) The IPv6 lookup was totally broken - fixed it.
  1016.          (reported by Holger)
  1017.  
  1018. 20-Aug-2000 (Lars Duening)  (3.2.8-dev.225 == 3.2.8)
  1019.     - RELEASE 3.2.8
  1020.     - (func_spec, prolang.y) Efun clonep() now accepts 'mixed' arguments.
  1021.          (suggested by Fiona)
  1022.     - (interpret.c) The salt-handling of efun crypt() is now compatible
  1023.          with the md5 passwords of FreeBSDs libscrypt. (thanks, Gerhard!)
  1024.  
  1025. 15-Aug-2000 (Lars Duening)  (3.2.8-dev.224)
  1026.     - (prolang.y) All ranges '[..<op><expr>]' caused the compiler to overwrite
  1027.          memory (most of the time the compiled program) because the attributes
  1028.          of <expr> weren't promoted up by the <ob>. 
  1029.     - (lex.c) '//' comments in the argument list of a function macro at the
  1030.          point of use were not ignored and caused syntax errors. It even was
  1031.          already a 'TODO' in the lexer... (reported by Croft and Parsec).
  1032.  
  1033. 14-Aug-2000 (Lars Duening)  (3.2.8-dev.223)
  1034.     - (prolang.y) The range '[..-<expr>]' caused the compiler to overwrite
  1035.          memory (most of the time the compiled program) because the attributes
  1036.          of <expr> weren't promoted up by the '-' (reported by Mammi).
  1037.     - (prolang.y) In the expression '++<ident>' the opcode for '++' was
  1038.          overwritten if the <ident> required a 2-Byte index. (b-000803,
  1039.          b-000810)
  1040.     - (comm.c) Looking up hostname first enters the IP address as string
  1041.          into the lookup table, to be replaced later by the ERQ. This neatly
  1042.          handles unresolved hostnames as well (provided by LynX).
  1043.          
  1044. 11-Aug-2000 (Lars Duening)  (3.2.8-dev.222)
  1045.     - (mstrings) Completed the implementation of the string module itself.
  1046.  
  1047. 10-Aug-2000 (Lars Duening)
  1048.     - (func_spec, interpret.c, efuns.c) Efun terminal_colour() can now be used
  1049.          with no keyword mapping at all: it then acts as a simple wrapping
  1050.          efun.
  1051.  
  1052. 08-Aug-2000 (Lars Duening)
  1053.     - (smalloc.c) Attempts to free a memory block twice are now explicitely
  1054.          flagged (when compiling with MALLOC_TRACE).
  1055.     - (lex.c) #else and #endif followed by uncommented text raise an error
  1056.          only in pedantic mode; otherwise just a warning is generated.
  1057.     - (array.c, regexp.c, backend.c) Made the handling of a regexp's memory
  1058.          more resistant to errors. Especially an error during a match or the
  1059.          first pass of a regexp compilation caused the memory for the last
  1060.          regexp compiled being freed unconditionally, even when that last
  1061.          regexp was still in use or had been freed already.
  1062.  
  1063. 04-Aug-2000 (Lars Duening)
  1064.     - (lex.c) After an include, the driver did not refill its lex buffer.
  1065.          This had bad or even catastrophic results if the include failed
  1066.          and the include statement was the last in the lex buffer.
  1067.          (reported by Freaky)
  1068.     - (lex.c) The preprocessor statements #else, #endif and #define now
  1069.          check if they are followed by uncommented text. If yes, the
  1070.          former two raise an error (like real C does), if no, the latter
  1071.          one raises an error. (reported by Freaky)
  1072.  
  1073. 01-Aug-2000 (Lars Duening)  (3.2.8-dev.221)
  1074.     - (hosts/be/Makefile, .../beyacc) The driver can now be crosscompiled
  1075.          on x86 for PPC.
  1076.     - (mud/lp-245) Corrected a few simul_efun definitions.
  1077.     - (lex.c) '#else' was not recognized if followed by whitespace.
  1078.          (reported by Bardioc and Dafire)
  1079.  
  1080. 30-Jul-2000 (Lars Duening)  (3.2.8-dev.220)
  1081.     - (prolang.y)  Redefinition of an inherited function with differing
  1082.          arguments was not properly differentiated from a normal redefinition,
  1083.          causing the redefined argument information to be lost even with
  1084.          #pragma save_types in effect. (reported by Bardioc)
  1085.     - (mstrings) First code for an improved string handler.
  1086.  
  1087. 26-Jul-2000 (Lars Duening)  (3.2.8-dev.219)
  1088.     - (lex.c) Preprocessor keywords weren't recognized if they were
  1089.          followed by a non-space character (e.g. '# if('). (reported
  1090.          by Fiona).
  1091.     - (object.c) Saving a mapping to a file wrote unsaveable keys like
  1092.          objects as '0' into the savefile, possibly creating multiple
  1093.          entries with the same key. As restore_object() didn't expect
  1094.          this, svalue were simply overwritten instead of properly freed.
  1095.          This lead to memory leaks. Now, non-saveable keys and their
  1096.          data are completely excluded from a saved mapping, and the
  1097.          restore function is more robust. (part of: b-990429, b-991123-1,
  1098.          b-000104)
  1099.  
  1100. 25-Jul-2000 (Lars Duening)
  1101.     - (interpret.c, smalloc.c) Removed two warnings (thanks, Freaky!).
  1102.  
  1103. 23-Jul-2000 (Lars Duening)  (3.2.8-dev.218)
  1104.     - (main.c) The removal of MAX_SMALL_MALLOCED somehow didn't make
  1105.          it into the diff.
  1106.  
  1107. 20-Jul-2000 (Lars Duening)  (3.2.8-dev.217)
  1108.     - (regexp.c) Errors in the regular expression leaked the memory
  1109.          from temporary buffers (found by Freaky).
  1110.  
  1111. 18-Jul-2000 (Lars Duening)
  1112.     - (smalloc.c, xalloc, main.c, settings/*, configure.in)
  1113.          When the system run out of memory in a small block allocation
  1114.          during a GC, it tended to crash
  1115.          because the interaction of the 'force_more' allocation and  the
  1116.          'max_small_malloced' parameter caused the allocator to free the
  1117.          reserves, but to never check the freelists. Removing the 
  1118.          max_small_malloced parameter and slightly simplifying the
  1119.          force_more logic solved the problem. As a side effect, the
  1120.          commandline argument '--max-small-malloc' and the corresponding
  1121.          configuration parameter are gone.
  1122.  
  1123. 17-Jul-2000 (Lars Duening)
  1124.     - (closure.c, gcollect.c, dumpstat.c, interpret.c, object.c)
  1125.          Revisited the places where a NULL object->variables might
  1126.          be used. Especially replace_program was suspectible to this.
  1127.     - (interpret.c) Efun to_string() now accepts lambda closures
  1128.          as well. sprintf() was modified to print the same information
  1129.          as to_string() returns. (suggested by Fiona)
  1130.  
  1131. 06-Jul-2000 (Lars Duening)  (3.2.8-dev.216)
  1132.     - (smalloc.c) Removed two warnings (thanks, Freaky!)
  1133.     - (lex.c) Improved the display of the error context at line ends
  1134.          or end of files.
  1135.     - (configure, port, machine.h.in) Ultrix (VAX) doesn't provide
  1136.          the strdup() function, so I added a check and a replacement
  1137.          function. Ironically, make_func.y already has its own strdup()
  1138.          for exactly this reason... (reported by Bruce).
  1139.  
  1140. 04-Jul-2000 (Lars Duening)  (3.2.8-dev.215)
  1141.     - (smalloc.c) Oops, the file didn't compile.
  1142.  
  1143. 03-Jul-2000 (Lars Duening)  (3.2.8-dev.214)
  1144.     - (comm.c) A DEBUG_TELNET statement was at the wrong place, dereferencing
  1145.          an uninitialized variable (b-000620).
  1146.     - (object.c) Forgot to delete the old ixopen() statement when making
  1147.          the change in 3.2.8-dev.210, causing the driver to run out of
  1148.          fds because every savefile was opened twice. (b-000630)
  1149.     - (smalloc.c) Added more magic words to accomodate the increased
  1150.          SMALL_BLOCK_MAX value. In addition, the magic word arrays are
  1151.          indexed modulo their size in case SMALL_BLOCK_MAX is increased
  1152.          over the size of the arrays again.
  1153.     - (interpret.c) Made the VM Stack error messages more informative.
  1154.     - (prolang.y) Provided by UNItopia: return type mismatches are by
  1155.          default warnings, and in pedantic mode real errors.
  1156.     - (Makefile.in) The generated Makefile ended the OBJ definition
  1157.          on sane systems with a line ending in a backslash, which the
  1158.          Ultrix make doesn't like. (thanks, Bruce!)
  1159.  
  1160. 01-Jul-2000 (Lars Duening)  (3.2.8-dev.213)
  1161.     - (main.c) DEBUG options are printed with --options, too.
  1162.     - (object.c) If a savefile can't be opened, the strerror() message
  1163.          is included into the error message.
  1164.     - (backend.c) If the driver runs out of fds in efun write_file(),
  1165.          lex_close() is called only when there is a compilation going
  1166.          on (before, it was called on every out-of-fds, which crashed
  1167.          the driver if it happend outside of a compile). (reported by
  1168.          Freaky)
  1169.     - (comm.c) h_telnet_neg() always removed two values from the
  1170.          stack, regardless of many actually were there. (b-000625)
  1171.     - (interpret.c) The handling of a caught error in catch() has
  1172.          been exported in a separate, non-inlineable function to
  1173.          thwart overzealous optimizers. (b-000606)
  1174.     - (doc/LPC/closure_guide) Clarified the creation of mappings
  1175.          using #'([. (b-000217-1)
  1176.     - (lex.c) lex_error_context() pays more attention to the end
  1177.          of the line buffer and EOF characters - before it blindly
  1178.          copied 14 characters after *outp. (b-000518)
  1179.  
  1180. 29-Jun-2000 (Lars Duening)  (3.2.8-dev.212)
  1181.     - (settings/unitopia, doc/efun/count_bits) Small changes.
  1182.     - (backend.c) The 'inconsistency in main loop' message is now
  1183.          printed onto stdout, too.
  1184.     - (main, backend.c) The state check (available when compiled with
  1185.          DEBUG) can now be controlled via the commandline option
  1186.          '--check-state <lvl>'.
  1187.  
  1188. 28-Jun-2000 (Lars Duening)  (3.2.8-dev.211)
  1189.     - (prolang.y) Removed the shift/reduce conflict in the rules for
  1190.          argument definitions: token L_VOID was ambiguous.
  1191.     - (prolang.y) The argument type check stumbled over additional
  1192.          arguments in a function redefinition. (reported by Bardioc)
  1193.     - (interpret.c) Operator += allows to add strings and floats to ints,
  1194.          as operator + already does. (reported by Croft)
  1195.  
  1196. 27-Jun-2000 (Lars Duening)  (3.2.8-dev.210)
  1197.     - (closure.c) The lambda block ({ #'return }) was compiled incorrectly:
  1198.          a F_RETURN0 was generated, but for the closure compiler the block
  1199.          returned void, necessiting the insertion of a default value by
  1200.          the surrounding block. The result was a 'Bad stack at F_RETURN' at
  1201.          the final F_RETURN[0] of the lambda closure latest,
  1202.          e.g. for funcall(lambda(0, ({ #'?, 1, 1, ({ #'return }) }) )).
  1203.          (reported by Mat@Maethos)
  1204.     - (object.c) Under Cygwin and other MSDOS filesystem systems, the
  1205.          savefiles are opened in binary mode. (thanks, Bastian!) (b-000528)
  1206.  
  1207. 16-Jun-2000 (Lars Duening)
  1208.     - (pkg/mysql) Integrated the update to dev.207 (thanks, Malcom!)
  1209.  
  1210. 14-Jun-2000 (Lars Duening)  (3.2.8-dev.209)
  1211.     - (settings/hyperborea) added.
  1212.     - (comm.c) The default routine for answering telnet negotiation requests
  1213.          forgot to clean up the LPC stack when no hook was defined, thus
  1214.          eventually overwriting memory. Since this happened only with
  1215.          clients which actually did negotiate options, this bug remained
  1216.          undetected for quite some time. (b-000508)
  1217.     - (backend.c) Since b-000508 would have been found earlier if the
  1218.          LPC stackpointer had been checked for consistency, I reactivated
  1219.          the check_state() mechanism in DEBUG mode.
  1220.     - (lex.c, prolang.y, interpret.c) Corrected the linecounting in
  1221.          combination with inline closures (found by Zora).
  1222.  
  1223. 12-Jun-2000 (Lars Duening)  (3.2.8-dev.208)
  1224.     - (efuns.c) present(object) returned the environment of the object
  1225.         found, not the object itself. While traditional, this behaviour
  1226.         is rather illogical. (thanks, Freaky!)
  1227.     - (several files) Clarified some casts.
  1228.  
  1229. 04-Jun-2000 (Lars Duening)  (3.2.8-dev.207)
  1230.     - (mapping.c) Added a fatal() if the mapping size rises over 0x10000000.
  1231.         This is to track down b-000218.
  1232.  
  1233. 02-Jun-2000 (Lars Duening)
  1234.     - (comm.c) Added a number of debug prints to debug the telnet machine.
  1235.         The are inactive unless DEBUG_TELNET is defined.
  1236.  
  1237. 30-May-2000 (Lars Duening)
  1238.     - (doc/efun/send_imp) Added a note regarding the handling of errors
  1239.         on some machines. (thanks, lynX!)
  1240.     - (interpret.c) The driver now prints the last 200 instructions when
  1241.         fatal()ing in DEBUG mode. In addition, the trace also lists the
  1242.         absolute stack usage together with the already known relative
  1243.         usage.
  1244.  
  1245. 29-May-2000 (Lars Duening)  (3.2.8-dev.206)
  1246.     - (stralloc) Small improvements to the CHECK_STRING mechanism. Added
  1247.         several diagnostics regarding possible refcount over/underflows.
  1248.     - (stralloc) New define 'KEEP_STRINGS' prohibits shared strings
  1249.         from being deallocated. While memory intensive, this is a debugging
  1250.         measure to locate the 'free string not found' error.
  1251.  
  1252. 28-May-2000 (Lars Duening)  (3.2.8-dev.205)
  1253.     - (configure) Remade with autoconf 2.13
  1254.  
  1255. 28-May-2000 (Lars Duening)  (3.2.8-dev.204)
  1256.     - (prolang.y) Warnings are generated if the redefinition of a function
  1257.         loses the 'varargs' attribute (pedantic only), or if the redefinition
  1258.         makes an incompatible change to the return type. Assignment type error
  1259.         messages are more informative. And the argument type warnings/errors
  1260.         are now printed for the correct source line, not the one following the
  1261.         function.
  1262.     - (ed.c) New command 'M' to strip ^Ms from lineends (thanks, Dafire!)
  1263.     - (hosts/be/Makefile) The cross-compiled executable is provided with
  1264.         proper resources and file attributes (icons!).
  1265.     - (doc/LPC/if) Added.
  1266.  
  1267. 27-May-2000 (Lars Duening)
  1268.     - (prolang.y) Misplaced prototypes are now a warning, not just a debug
  1269.         message.
  1270.  
  1271. 23-May-2000 (Lars Duening)  (3.2.8-dev.203)
  1272.     - (comm.c, util/xerq/erq.c) Corrected a type error which caused the
  1273.         erq to misinterpret message lengths, resulting in overwriting
  1274.         its global variables: Due to a missing sign, the driver did not
  1275.         handle a blocking write() operation properly, causing the resend of
  1276.         the pending data to start off at the wrong offset. In turn, the
  1277.         xerq did not protect itself against invalid message lengths.
  1278.         This bug only triggered when the mud tried to sent more data
  1279.         to the erq at once than the connection could handle. (Thanks,
  1280.         Elric!) (b-000404)
  1281.  
  1282. 22-May-2000 (Lars Duening)
  1283.     - (various files) Cleaned up a couple of documentary files.
  1284.  
  1285. 22-May-2000 (Lars Duening)  (3.2.8-dev.202)
  1286.     - (prolang.y) Whenever a function is redefined, the argument types
  1287.          are checked for consistency. If they differ, a warning
  1288.          (error in pedantic mode) is issued. The same mechanism compares
  1289.          the prototype for a function with its definition.
  1290.  
  1291. 21-May-2000 (Lars Duening)
  1292.     - (smalloc.c) Added a diagnostic to the 'Temporary out of mem'
  1293.          situation, because the driver run totally out of mem before
  1294.          the usual diagnostic in the allocating code is reached.
  1295.  
  1296. 20-May-2000 (Lars Duening)
  1297.     - (interpret.c) foreach() makes sure that destructed objects are
  1298.          removed from arrays. Also, assign_svalue_no_free() assigns 0
  1299.          to the destination if the source is a destructed object.
  1300.  
  1301. 18-May-2000 (Lars Duening)  (3.2.8-dev.201)
  1302.     - (lex, prolang.y) Pragma 'pedantic' causes the compiler to treat
  1303.          certain warnings as errors. Pragma 'sloppy' (the default
  1304.          setting) turns the pedantic behaviour off.
  1305.     - (prolang.y, simulate) parse_error(), and with it the master
  1306.          lfun log_error() received a flag argument 'warn', which is
  1307.          set if the passed message is a warning, not an error.
  1308.  
  1309. 16-May-2000 (Lars Duening)  (3.2.8-dev.200)
  1310.     - (prolang.y) Added functions yywarn() and yywarnf() to print
  1311.         warnings during the compile. They act like yyerror() except
  1312.         that they don't count up parse errors.
  1313.     - (prolang.y) Failure to pass enough arguments to a non-varargs
  1314.         simul_efun generates a warning. I'd like to make it an error,
  1315.         but then a lot of mudlibs would be unhappy.
  1316.  
  1317. 14-May-2000 (Lars Duening)  (3.2.8-dev.199)
  1318.     - (ed.c) Removed an endless loop in ed_buffer_size().
  1319.  
  1320. 08-May-2000 (Lars Duening)
  1321.     - (func_spec) Efun apply() was still listed with two arguments
  1322.         where only one is actually required.
  1323.     - (comm.c) Removed a warning.
  1324.  
  1325. 07-May-2000 (Lars Duening)  (3.2.8-dev.198)
  1326.     - (util/xerq/socket.c) In flush_queue(), the loop pointers weren't
  1327.         advanced after removing a queue element.
  1328.     - (doc/efun/symbol_variable) Clarified the functionality.
  1329.     - (interpret.c) Efun apply(), like efun funcall(), just returns
  1330.         the first argument if it is not a closure.
  1331.     - (func_spec) Efun typeof() can now accepts literal references.
  1332.     - (array.c) Efun transpose_array() handles mixed size subarrays
  1333.         better.
  1334.     - (lex.c, interpret.c, simulate.c, object.c, prolang.y) More tweaks
  1335.         to the memory statistic.
  1336.     - (stralloc.c) Corrected the memory statistics.
  1337.  
  1338. 07-May-2000 (Lars Duening)  (3.2.8-dev.197)
  1339.     - (smalloc.c, comm.c, simulate.c) Added a few more memory statistics.
  1340.         Some memory uses are still unaccounted for, including the memory
  1341.         used for mallocated strings.
  1342.  
  1343. 05-May-2000 (Lars Duening)
  1344.     - (smalloc.c, efuns.c) Corrected the smalloc memory stat to count
  1345.         and list the wasted memory fragments. Adapted the efun debug_info()
  1346.         to return this information. Also safeguarded the dump_malloc_data()
  1347.         function against allocations during this function (this lead to
  1348.         confusing data).
  1349.     - (lex, simulate.c) Added an output of the lexer structures to 'status'.
  1350.  
  1351. 30-Apr-2000 (Lars Duening)  (3.2.8-dev.196)
  1352.     - (actions.c) Corrected the cleanup code in execute_command() to
  1353.         handle the situation if the command giver is destructed during
  1354.         the command. (b-000207-3)
  1355.     - (lex.c) By Matthew Julius: added the preprocessor macros __DIR__
  1356.         and __PATH__(). (f-990203-08)
  1357.     - (main.c) Corrected a few typos in the help texts.
  1358.     - (prolang.y) Corrected the type tracking when compiling the
  1359.         '+' operator.
  1360.     - (prolang.y) '(void)' is now accepted as empty function argument
  1361.         list.
  1362.  
  1363. 27-Apr-2000 (Lars Duening)
  1364.     - (hosts/be) Adapted the BeOS port to R5.
  1365.  
  1366. 21-Apr-2000 (Lars Duening)  (3.2.8-dev.195)
  1367.     - (prolang.y) Added the change required by bison.
  1368.  
  1369. 20-Apr-2000 (Lars Duening)  (3.2.9-dev.194)
  1370.     - (prolang.y) Local variables can now be initialized in the
  1371.          definition.
  1372.     - (random.c) Another small tweak.
  1373.  
  1374. 19-Apr-2000 (Lars Duening)  (3.2.8-dev.193)
  1375.     - (configure.in, configure) Oops #2, the '--with-malloc' was
  1376.          applied wrongly to the config.h
  1377.     - (random.c) Improved the handling of large ranges.
  1378.     - (gcollect.c) Multiple references to a memblock no longer fatal()
  1379.          the driver, but instead print a diagnostic.
  1380.  
  1381. 18-Apr-2000 (Lars Duening)  (3.2.8-dev.192)
  1382.     - (configure.in, configure) Oops, the '--with-malloc' was not
  1383.          really applied to the config.h
  1384.     - (util/xerq) Added a missing variable initialisation, and corrected
  1385.          the num_fd computation for select(). (thanks, Michael!)
  1386.     - (settings/forgottendreams) The name of the settings file should
  1387.          be used by the file itself, hm?
  1388.  
  1389. 17-Apr-2000 (Lars Duening)  (3.2.8-dev.191)
  1390.     - (random.c) Improved the fitting of the raw random number into
  1391.          the given range. The key is not to use the '%' operator, as
  1392.          the low-order bits are distressingly non-random. (b-990217-3)
  1393.     - (settings/unitopia) Updated.
  1394.     - (settings/forgottendreams) Added.
  1395.     - (smalloc.c) Increased the max size of a small block to 128 Bytes.
  1396.          This value used to crash Unitopia, but probably only because
  1397.          the tables weren't fully initialised. This has been corrected,
  1398.          and with Unitopia's new system the crash vanished anyway.
  1399.     - (array.c, backend.c, closure.c, comm.c, efuns.c, prolang.y, object.c,
  1400.        ptrtable.c, simulate.c stralloc.c, strfuns.c, sprintf.c, xalloc.h)
  1401.          Removed a number of warnings. (thanks, Freaky!)
  1402.     - (util/(x)erq/erq.c) Correct the time_stamp() function.
  1403.     - (util/xerq/socket.c) Corrected a type which clobbered the TCP
  1404.          functionality. (thanks, Michael!)
  1405.     - (pkg/mysql/sql.diff) Updated. (thanks, Michael!)
  1406.     - (object.c) Got rid of the fragile 'old_format' variable; instead
  1407.          format parse decisions use the read version value directly.
  1408.     - (interpret.c) <mapping1> -= <mapping2>  now works for <mapping2>
  1409.          of any width, like the normal subtraction already does.
  1410.  
  1411. 16-Apr-2000 (Lars Duening)  (3.2.8-dev.190)
  1412.     - (lotsa files) Improved to 'out of memory' error messages to state
  1413.          how much memory was needed for what.
  1414.  
  1415. 16-Apr-2000 (Lars Duening)  (3.2.8-dev.189)
  1416.     - (array.ch, interpret.c) Array sizes are listed verbatim in the
  1417.          array structure.
  1418.     - (smalloc.c) Small improvements to the aligned allocations.
  1419.  
  1420. 15-Apr-2000 (Lars Duening)  (3.2.8-dev.188)
  1421.     - (doc/driver/codestyle) First version.
  1422.     - (xalloc.ch) New 'standardised' memory allocator module: it simply
  1423.          includes the source for whatever allocator was selected.
  1424.          As a side effect, the makefile no longer needs to know
  1425.          which allocator to use - the define moved into config.h .
  1426.     - (smalloc.ch, driver.h) Simplified the compilation of smalloc:
  1427.          the functions are now compiled as they are, and stubs are
  1428.          provided for the emulation of the clib functions if
  1429.          possible.
  1430.     - (other files) Adapted to the new memory allocator compilation,
  1431.          reducing the number of dependencies on MALLOC_smalloc.
  1432.          Especially: the GC support is now tied to the macro GC_SUPPORT,
  1433.          SMALLOC_(LPC_)TRACE has been renamed to MALLOC_(LPC_)TRACE,
  1434.          and array always store their size with the vector structure.
  1435.     - (configuration) The selection of the memory allocator can now
  1436.          be done with the '--with-malloc=<value>' option of configure.
  1437.  
  1438. 15-Apr-2000 (Lars Duening)  (3.2.8-dev.187)
  1439.     - (prolang.y, exec.h) Extended the bugfix from yesterday so that
  1440.          inherited functions are lookup up using a proper breadth search.
  1441.  
  1442. 14-Apr-2000 (Lars Duening)  (3.2.8-dev.186)
  1443.     - (prolang.y, exec.h) The compiler now keeps track which inherits
  1444.          happened at the top level. When looking for a ::function() to
  1445.          call, it searches until it either finds the function defined
  1446.          in a first level inherit, or it takes the first definition 
  1447.          found on any other level. (b-000207-4, b-000411-1)
  1448.     - (lex.c) Added new pragma 'weak_types' to counter the effects
  1449.          of a pragma 'strict_types'. (b-000208-1)
  1450.  
  1451. 13-Apr-2000 (Lars Duening)  (3.2.8-dev.185)
  1452.     - (actions.c) If the notify_fail() is a closure, it is made sure
  1453.          that it won't be freed while it is executing (thanks, Gnomi!)
  1454.     - (erq, xerq) The time_stamp() tried to use the driver's
  1455.          get_current_time() instead of the proper time().
  1456.     - (configure.in) Improved the recognition of unsupported
  1457.          compiler options.
  1458.  
  1459. 11-Apr-2000 (Lars Duening)  (3.2.8-dev.184)
  1460.     - (comm.c) Corrected an endless loop in lookup_ip_entry()
  1461.          (thanks, Freaky!)
  1462.     - (hosts/unix.h) When compiling with gcc on Amiga, the
  1463.          symbol AMIGA is made undefined.
  1464.  
  1465. 07-Apr-2000 (Lars Duening)  (3.2.8-dev.183)
  1466.     - (gcollect.c) Found another void-function casted to a value, this
  1467.          time it's writed().
  1468.     - (smalloc.c) Increasing the SMALL_BLOCK_SIZE to 32 caused
  1469.          crashes in UNItopia, manifesting themselves in garbage
  1470.          stack data. Reduced it back to 8.
  1471.     - (settings/eotl) Updated.
  1472.     - (object.c) Corrected the versoin detection in restore_object() - 
  1473.          the logic was reversed, but happened to work for the
  1474.          current generation of savefiles. (Thanks, Casey!)
  1475.  
  1476. 06-Apr-2000 (Lars Duening)  (3.2.8-dev.182)
  1477.     - (gcollect.c) Casting a the void returning function fatal()
  1478.          to a value returning function caused the AIX-xlc code
  1479.          generator to crash on high optimization levels.
  1480.     - (lots of files) Adapted for compilation on AIX 3.4 using xlc.
  1481.          Some of these changes may break the adaption previously done
  1482.          by Uwe, but now at least I have a base to work from on.
  1483.  
  1484. 06-Apr-2000 (Lars Duening)  (3.2.8-dev.181)
  1485.     - (lex.c, prolang.y, main.c, settings/*, configure)
  1486.         The keyword 'nosave' is now optional, controlled by the setting
  1487.         parameter 'enable-lpc-nosave'.
  1488.  
  1489. 05-Apr-2000 (Lars Duening)
  1490.     - (closure.c) Forgot to remove two leftover DEBUG printfs
  1491.         (thanks, Coogan!).
  1492.     - (object.c) Corrected one error message. (thanks, Casey!)
  1493.     - (comm.c) Added Lynx' optimization for the iptable[] IP
  1494.         address lookup. Main advantage is that it scales better
  1495.         to large numbers of users. (thanks!)
  1496.  
  1497. 04-Apr-2000 (Lars Duening)  (3.2.8-dev.180)
  1498.     - (pkg/mysql) Coogan provided the updated source files - thanks!
  1499.     - (INSTALL) BeOS: Added a paragraph about the etc/hosts file.
  1500.     - (settings/eotl) Added the settings for End of the Line (thanks,
  1501.         Casey!).
  1502.     - (util/erq, util/xerq) Added timestamps plus nametag to the
  1503.         diagnostics of the erq demons.
  1504.  
  1505. 03-Apr-2000 (Lars Duening)  (3.2.8-dev.179)
  1506.     - (array.c) Freaky was correct: sort_array() no longer made a copy
  1507.         of the incoming array *Mateese blushes deeply*. (b-000106-3)
  1508.     - (sprintf.c) Trailing pad space is not added if a newline
  1509.         follows directly afterwards.
  1510.  
  1511. 02-Apr-2000 (Lars Duening)  (3.2.8-dev.178)
  1512.     - (stralloc.c) Increased the hashed length from 20 chars to 100.
  1513.     - (smalloc.c) Increased the number of small block sizes from 8
  1514.         to 32, that is: the max small block size from 32 to 128 Bytes.
  1515.     - (*.h) Removed the leading '_' from the include guards as these
  1516.         are reserved for system defines.
  1517.     - (interpret.c, prolang.y, swap.c) Removed pointer-mismatches
  1518.         (for example char* vs. unsigned char*).
  1519.     - (port.c) Implemented time_stamp() using strftime().
  1520.  
  1521. 30-Mar-2000 (Lars Duening)  (3.2.8-dev.177)
  1522.     - (func_spec, prolang.y, lex.c, interpret.c, closure.c, sprintf.c)
  1523.         Two new bytecodes F_NX_RANGE/F_RX_RANGE (and their lvalue
  1524.         counterparts) implement the constructs [x..] and [<x..]. The
  1525.         former solution of abusing other bytecodes when these constructs
  1526.         were used in a closure was too unstable. (b-000106-1)
  1527.  
  1528. 29-Mar-2000 (Lars Duening)
  1529.     - (sprintf.c) Change the implementation so that the efun (s)printf()
  1530.         are now re-entrant.
  1531.  
  1532. 27-Mar-2000 (Lars Duening)  (3.2.8-dev.176)
  1533.     - (prolang.y) If the declaration of a new local variable in an
  1534.         lvalue context (foreach()) shadowed a global identifier, the
  1535.         lvalue was computed for the global identifier. And that
  1536.         meant random memory accesses! (b-000221-3, b-000105-2)
  1537.     - (simulate.c) execute_callback(): if an apply() fails, the
  1538.         apply_return_value is now properly set to 0. (b-000113-1)
  1539.     - (interpret.c, prolang.c) It is now made sure that no function
  1540.         is passed more than 255 arguments (the maximum which can
  1541.         be encoded in just one byte). (b-991220)
  1542.     - (simulate, smalloc.c) Removed the MALLOC_STAT statistic.
  1543.  
  1544. 26-Mar-2000 (Lars Duening)  (3.2.8-dev.175)
  1545.     - (actions.c) remove_action_sent(): Removed a segfault in the
  1546.         DEBUG code (of all things). Thanks, Casey!
  1547.     - (sprintf.c) (s)printf() didn't add padding if no
  1548.         data was following the format field. This is probably a space-
  1549.         saving feature, but seriously hinders some formatting tasks.
  1550.         (b-000228, b-000306-5)
  1551.     - (closure.c) symbol_efun(), and with it efun symbol_function(),
  1552.         didn't know about #'foreach. Oops. (b-000228-3)
  1553.     - (closure.c) compile_value(): #'++ was accidentally compiled
  1554.         as #'--. (b-000228-4)
  1555.     - (lex.c) The variable pragma_no_shadow wasn't initialized
  1556.         before a new compile. (b-000103)
  1557.  
  1558. 25-Mar-2000 (Lars Duening)
  1559.     - (prolang.y) Added two %type statements which allow the use of
  1560.         bison instead of byacc. (p-000205)
  1561.     - (efuns.c) Efun terminal_colour() didn't handle well the combination
  1562.         of indentation and forced wrapping in the middle of a word.
  1563.         (b-000217-2)
  1564.     - (main.c, simulate.c) Added a 'vdebug_message()' as companion to
  1565.         'debug_message()', taking a va_list argument instead of the
  1566.         printf() style varargs. It's needed for a proper implementation
  1567.         of fatal() (I'm amazed that it didn't crash earlier).
  1568.  
  1569. 23-Mar-2000 (Lars Duening)  (3.2.8-dev.174)
  1570.     - (object.c) restore_value()/restore_object() modify the value
  1571.         string, which is desastrous if it's a volatile or shared
  1572.         string. (b-000212-1)
  1573.     - (doc/efun/strstr) Documented the negative start indices. (b-000106-2)
  1574.     - (doc/efun/sort_array) Made clear that the argument array
  1575.         is sorted in-place. (b-000106-3)
  1576.  
  1577. 22-Mar-2000 (Lars Duening)  (3.2.8-dev.173)
  1578.     - (interpret.c) call_others on arrays crashed with empty arrays,
  1579.         and failed to handle 0s gracefully. The crasher was caused
  1580.         by a premature optimization of the algorithm... (b-000221).
  1581.     - (closure.c) Compiling a #'foreach, <sym-array> construct didn't
  1582.         check if the sym-array is non-empty (b-000228-2).
  1583.  
  1584. 21-Mar-2000 (Lars Duening)  (3.2.8-dev.172)
  1585.     - (actions.c) When execute_command() called privilege_violation4(),
  1586.         it passed sp+1 instead of sp as the stackpointer to use. This
  1587.         lead inter_sp pointing to an uninitialized stack entry if the
  1588.         privilege was denied, causing a fandango on the core. (b-000110-2)
  1589.     - (interpret.c) set_bit(), clear_bit(), test_bit() did not check
  1590.         if the given bit number might be negative. (b-000112)
  1591.  
  1592. 20-Mar-2000 (Lars Duening)  (3.2.8-dev.171)
  1593.     - (actions.c) Revisited the 64-Bit issue and removed all casts.
  1594.     - (actions.c, mudlib/sys/commands.h, doc/efun/add_action)
  1595.         Corrected the behaviour of add_action() so that it is backwards
  1596.         compatible again. Added symbolic defines for the flags accepted
  1597.         by add_action(). Improved the manpage to include examples of how
  1598.         the flags affect the command parsing. (thanks, Freaky!) (b-991230)
  1599.  
  1600. 10-Mar-2000 (Lars Duening)  (3.2.8-dev.170)
  1601.     - (actions.c) Corrected a possible 64-Bit issue: a cast from (p_int)
  1602.          down to (int) might have lost bits while handling an address.
  1603.     - (prolang.y, lex.c) The modifier 'nosave' for variables takes
  1604.          over the meaning of 'static' - the latter is still recognized
  1605.          for variables, but its use is deprecated. Similar, 'nosave'
  1606.          should be used instead of 'static' as inheritance 
  1607.          modifier.
  1608.  
  1609. 09-Mar-2000 (Lars Duening)  (3.2.8-dev.169)
  1610.     - (lex.c) Added the name of the macro to certain error messages
  1611.          issued during expansion. This also required a new function
  1612.          lexerrorf() with obvious purpose.
  1613.  
  1614. 06-Mar-2000 (Lars Duening)  (3.2.8-dev.168)
  1615.     - (doc/efun/closure_guide) Removed Tubmud'isms.
  1616.     - (bugs/...) New bug reports, and the EotL patches.
  1617.  
  1618. 04-Mar-2000 (Lars Duening)  (3.2.8-dev.167)
  1619.     - (interpret.c, doc/efun/tell_room) Doc corrections.
  1620.     - (interpret.c) f_traceprefix called master::valid_trace() with
  1621.         "trace" instead of "traceprefix".
  1622.     - (doc/efun/call_out) Corrections.
  1623.     - (bugs/...) Added all the bug reports since .164.
  1624.  
  1625. 01-Mar-2000 (Lars Duening)  (3.2.8-dev.166)
  1626.     - (make_func.y, exec.h, backend.c, parse.c) Removed warnings.
  1627.  
  1628. 01-Mar-2000 (Lars Duening)  (3.2.8-dev.165)
  1629.     - All the prvious changes since .141 are back under PRCS control.
  1630.     - (hosts/be/Makefile) The dependencies on generated files
  1631.          like stdstrings.h are now generated automatically as well
  1632.          (requires MkDepend 1.6).
  1633.  
  1634. 17-Dec-1999 (Lars Duening)  (3.2.8-dev.164)
  1635.     - (mapping.c) The callbacks for map(mapping) and filter(mapping)
  1636.          were told about more arguments than actually existing on
  1637.          the stack. Very stupid, but it took the Evermore lib to
  1638.          find this one. (thanks, Bardioc!)
  1639.  
  1640. 16-Dec-1999 (Lars Duening)  (3.2.8-dev.163)
  1641.     - (simulate.c) And of course the difference between toplevel and
  1642.          normal callbacks also includes the current_object :-(
  1643.     - (prolang.y) Typechecking for pre-increment/decrement on indexed
  1644.          values stumbled over mixed arrays. (thanks, DiEHARD).
  1645.  
  1646. 15-Dec-1999 (Lars Duening)
  1647.     - (comm.c) Recognition of a quoted IAC in the input forgot to
  1648.          change the state back to TS_DATA.
  1649.     - (simulate.c) Freeing callbacks with just one arg used the wrong
  1650.          pointer and crashed. (thanks, Freaky!)
  1651.     - (simulate, array.c, comm.c, call_out.c, mapping.c) Argh - I
  1652.          have to distinguish if a callback is called from the toplevel
  1653.          (current_prog is invalid) or from a program (current_prog is
  1654.          valid). (thanks, Freaky!)
  1655.  
  1656. 14-Dec-1999 (Lars Duening)  (3.2.8-dev.162)
  1657.     - (pkg/mysql) Corrected a number of crashers (thanks, Bastian!)
  1658.          and added the HOWTO by Karm.
  1659.     - (actions.c) The recent changes activated a bit of legacy code,
  1660.          which started passing the verb as part of the argument string
  1661.          to NO_SPACE commands. *sigh* (thanks, Daryth!)
  1662.     - (simulate, call_out.c, comm.c) The callbacks can now accept
  1663.          lvalues as arguments.
  1664.          Also the index returned for faulty arguments was one too
  1665.          high. (thanks, Zwirch!)
  1666.     - (array.c) If setting up an efun callback generates an argument
  1667.          error, the proper, lower stack pointer is returned. (thanks,
  1668.          Zwirch)
  1669.     - (interpret.c) apply() on efun-, sefun- and operator-closures
  1670.          didn't properly check the number of arguments. This wasn't
  1671.          detected earlier because the related code has hardly ever
  1672.          been executed. (thanks, Zwirch!)
  1673.     - (comm.c) The driver telnet negotiations understands quoted
  1674.          IACs now. (thanks, Amylaar!)
  1675.  
  1676. 13-Dec-1999 (Lars Duening)
  1677.     - (func_spec, array.c) Efun map() can now map an array through
  1678.          a mapping; similar to how filter() works.
  1679.     - (prolang.y) Indexing [..x] and [..<x] are allowed as short form
  1680.          of [0..x] and [0..<x]. (f-990419)
  1681.     - (prolang.y) Moved the parsing and compilation of the various indexing
  1682.          forms into two dedicated rules - this greatly simplified all
  1683.          the other rules which involve indexing (yes: for once a file
  1684.          became shorter :-).
  1685.     - (func_spec, prolang.y, interpret.c, closure.c, sprintf.c) The
  1686.          ranges [x..] and [<x..] are now mapped onto [x..<1] resp. [<x..<1];
  1687.          this removes the need for F_EXTRACT2 for everything but the
  1688.          efun extract(). F_(PROTECTED_)EXTRACT_LVALUE are gone, too.
  1689.     - (sprintf.c) Made '%O' a bit more knowledgable about the various
  1690.          lvalues, but without the interpret.c-internal datastructures
  1691.          the printed data is just an approximation.
  1692.  
  1693. 12-Dec-1999 (Lars Duening)  (3.2.8-dev.161)
  1694.     - (array, interpret) Removed a few compilation problems.
  1695.     - (ed.c) If a file can't be read on editor start, the full
  1696.          message is printed.
  1697.  
  1698. 12-Dec-1999 (Lars Duening)  (3.2.8-dev.160)
  1699.     - (array, simulate, mapping, interpret.c) Modified the map_() and
  1700.          filter_() efuns, also sort_array() and walk_mapping(), to use
  1701.          the recently introduced callback_t for their implementation.
  1702.          This not only simplified the code (especially in array.c), but
  1703.          also introduces a standard way how callbacks are specified in
  1704.          such efuns.
  1705.  
  1706. 11-Dec-1999 (Lars Duening)
  1707.     - (actions.c, sent.h) Implemented the "short verb" usage of
  1708.          efun add_action().
  1709.     - (sent.h, ed) Completed the documentation of sentences.
  1710.     - (sent.h, comm, simulate, other files) The interactive_t is no longer
  1711.          a subclass of shadow_t; instead the latter now acts as generic
  1712.          "attribute" sentence for an object, linking to an independent
  1713.          interactive_t for interactive users. This makes handling interactive
  1714.          connections somewhat simpler.
  1715.  
  1716. 10-Dec-1999 (Lars Duening)
  1717.     - (actions, gcollect.c) The garbage collector did not trace the
  1718.          globals of actions.c under the faulty impression that they are
  1719.          valid only during a command execution. However, e.g. notify_fail()
  1720.          can be used outside of a command, which led to used memory being
  1721.          deallocated in the GC. From there, the damage continued to spread.
  1722.          (at least part of b-991123-1)
  1723.     - (doc/LPC/functions) Rewritten to cover all the new features introduced
  1724.          since LPmud 2.4.5.
  1725.     - (interpret.c) Added check for stack overflow in the eval loop - code
  1726.          like funcall(lambda(0, ({ #'({ })+({1})*10000)) could otherwise
  1727.          easily crash the driver. (thanks, Zwirch!)
  1728.  
  1729. 09-Dec-1999 (Lars Duening)
  1730.     - (Makefile.in, hosts/*/Makefiles) The manual dependencies for instrs.h
  1731.          were out of date. (reported by Freaky and Anders - thanks!)
  1732.     - (port.c) The current time_stamp() implementation omitted leading
  1733.          zeroes in the day field. (thanks, Freaky!)
  1734.  
  1735. 08-Dec-1999 (Lars Duening)  (3.2.8-dev.159)
  1736.     - (closure, gcollect.c, interpret.c) The closure compile did not
  1737.          handle lambdas with more than 254 constants properly: the
  1738.          number of values was consistently stored in the wrong place.
  1739.          A classic off-by-one, caused by the indexing from the end.
  1740.          (thanks, Zora!)
  1741.  
  1742. 07-Dec-1999 (Lars Duening)
  1743.     - (pkg/mysql/) Small corrections.
  1744.  
  1745. 06-Dec-1999 (Lars Duening)
  1746.     - (mud/lp-245/obj/master.c, .../simul_efun.c) valid_write() and
  1747.          valid_snoop() didn't work well with plain drivers due to the
  1748.          reliance on file_name(). The master now has its own file_name().
  1749.          (thanks, Andy!)
  1750.     - (string_spec, make_func.y, Makefiles, sources) Tired of updated
  1751.          stralloc.* in three places for every change in the common
  1752.          strings table, I now define all these strings in string_spec
  1753.          and modified make_func to generate stdstrings.[ch] from these.
  1754.     - (interpret.c) Efun get_type_info(cl, 2) did not return the
  1755.          object for closure <cl> if <cl> was a lambda or bound lambda.
  1756.          (thanks, Freaky!)
  1757.  
  1758. 05-Dec-1999 (Lars Duening)
  1759.     - (interpret.c, comm.c, simulate.c, object.c) Cosmetics.
  1760.     - (settings/dt2, mud/dt2/...) Created the Deeper Trouble II adaption
  1761.          from the old 3.2.1@141 diffs. It compiles and seems to work,
  1762.          but without the mudlib I can't tell for sure.
  1763.  
  1764. 03-Dec-1999 (Lars Duening)  (3.2.8-dev.158)
  1765.     - (interpret.c) Efun query_input_pending() deref'd the wrong object,
  1766.          causing a nice crash. (thanks, Michael!)
  1767.  
  1768. 01-Dec-1999 (Lars Duening)
  1769.     - (doc/efun/inherit_file) Corrected typos (thanks, Freaky!).
  1770.     - (doc/efun/[]) Accidentally got lost in the last snapshot.
  1771.     - (interpret.c) Removed a sneaky memory leak in transfer_pointer_range().
  1772.          (thanks, Michael!)
  1773.     - (func_spec) Efun functionlist() was specified to return "string*"
  1774.          instead of the correct "mixed*". (thanks, Freaky!)
  1775.     - (interpret.c) Improved the error messages of F_MAP_INDEX.
  1776.  
  1777. 29-Nov-1999 (Lars Duening)
  1778.     - (func_spec, comm) New efun "set_combine_charset()" to combine
  1779.          characters received in charmode into strings. (f-991126-0)
  1780.     - (func_spec, comm.c) Efun "set_connection_charset()" now also
  1781.          accepts a string as charset specificator.
  1782.  
  1783. 27-Nov-1999 (Lars Duening)  (3.2.8-dev.157)
  1784.     - (port.h) A tentative change of VAR_PROT() and VARPROT() for AIX.
  1785.     - (prolang.h, prolang.y) struct s_lrvalue is now defined twice in
  1786.          prolang.y, to be able to cope with a wider variety of yaccs
  1787.          (especially the AIX yacc).
  1788.     - (util/xerq/(erq.c, socket.c)) Forgot to change two "struct queue_s"
  1789.          to "struct equeue_s".
  1790.     - (stralloc.c) string_dinfo_data() used an uninitialized variable.
  1791.  
  1792. 26-Nov-1999 (Lars Duening)
  1793.     - (stralloc, gcollect.c, main, backend.c, Makefiles) When compiling
  1794.          with DEBUG and CHECK_STRINGS: The structures of the shared
  1795.          string table are shadows in a second table, and every string
  1796.          access checks the consistency of the structures. Additionally,
  1797.          with the commandline option "--check-strings" the whole string
  1798.          table is checked with every backend cycle.
  1799.  
  1800. 25-Nov-1999 (Lars Duening)
  1801.     The following three changes should correct b-990430, which might have
  1802.     caused b-991123-0 and b-991123-1 in turn.
  1803.     - (comm.c) When accepting a line of non-negotiation text in charmode,
  1804.          interactive_t.tn_start became negative after the second char.
  1805.          Similar if an error occured during a very long line - here
  1806.          set_noecho() used wrong indices.
  1807.     - (comm.c) Charmode: when a client sent single CRs and there were no
  1808.          negotiations on the same line, the CR was re-read (almost)
  1809.          endlessly.
  1810.     - (comm.c) Should the telnet machine receive too much data, the program
  1811.          now makes sure that .command_end won't fall under .tn_start resp.
  1812.          .command_start.
  1813.  
  1814. 24-Nov-1999 (Lars Duening)
  1815.     - (main.c) Commandline option "--check-refcounts" was mistakenly
  1816.          marked to accept a value.
  1817.  
  1818. 23-Nov-1999 (Lars Duening)
  1819.     - (actions.c, backend.c, call_out.c, comm.c, ed.c, gcollect.c,
  1820.        interpret.c, lex.c, main.c, mapping.c, object.c, prolang.y,
  1821.        simul_efun.c, simulate.c, stralloc.c, swap.c, wiz_list.c)
  1822.          Added the timestamp to the diagnostics. error() and fatal()
  1823.          calls automatically log the timestamp. The whole situation
  1824.          of what is logged where when is still a mess :-(
  1825.     - (comm.c) Ups, call_function_interactive() forgot to remove
  1826.          its (stack located) error recovery context from the context
  1827.          stack. And it hid the leading "!" when falling through to
  1828.          IGNORE_BANG handlers. (thanks, Freaky!)
  1829.     - (prolang.y, stralloc) New master-apply "inherit_file()" to check
  1830.          and generated the full filename from an inherit statement.
  1831.          (suggested by Freaky) (f-990323-0)
  1832.     - (interpret.c) free_interpreter_temporaries() now also removes
  1833.          all destructed objects from the code trace (obviously only
  1834.          when compiled with TRACE_CODE). Since this function is called
  1835.          only from the GC, it has no further sideeffects.
  1836.  
  1837. 22-Nov-1999 (Lars Duening)
  1838.     - (sprintf.c) sprintf("%O", object) in plain mode prints the object
  1839.          name with a leading "/". (thanks, Freaky!)
  1840.     - (lex.c) Master apply include_file() now receives the object filename
  1841.          in !compat with a leading slash; of the result, leading slashes
  1842.          are ignored. Also removed a typo. (thanks, Freaky!)
  1843.     - (simulate.c) Efun limited() did not give the closure the full
  1844.          amount of eval ticks are requested in the call. (thanks, Freaky!)
  1845.     - (mapping.c) Corrected the error handling in filter_mapping() and
  1846.          map_mapping(), which are used for the filter()/filter_indices()
  1847.          efuns and their map_() counterparts. (thanks, Robert!)
  1848.     - (port) New function time_stamp() for use in the creation of
  1849.          error and driver log messages.
  1850.  
  1851. 21-Nov-1999 (Lars Duening)
  1852.     - (simulate, gcollect.c, comm, call_out.c) Introduced the "callback"
  1853.          structure, to be used for input_to()s and call_out()s. call_out.c
  1854.          became really simple :-)
  1855.  
  1856. 20-Nov-1999 (Lars Duening)
  1857.     - (autoconf/configure.in, configure, port.h) Small tweaks.
  1858.     - (interpret.c) Correction to sort_array(): the GET_NUM_ARG occured
  1859.          too late.
  1860.  
  1861. 19-Nov-1999 (Lars Duening)  (3.2.8-dev.156)
  1862.     - (efuns.c, simulate.c, swap) Added new debug_info() request DINFO_DATA:
  1863.          DID_SWAP to retrieve the data usually printed as "status swap".
  1864.     - (efuns.c, smalloc) Added new debug_info() request DINFO_DATA:
  1865.          DID_MEMORY to retrieve the data usually printed as "status malloc".
  1866.     - (typedefs.h) Just a definition of strbuf_t was missing.
  1867.  
  1868. 18-Nov-1999 (Lars Duening)
  1869.     - (comm.c, autoconf/configure.in, autoconf/acconfig.h, machine.h.in)
  1870.          Added tests if F_SETOWN and SO_OOBINLINE are actually supported
  1871.          by the operating system.
  1872.     - (port.c, autoconf/configure.in, config.h.in, settings/{default,osb})
  1873.          Added the configuration option USE_SYSTEM_CRYPT. This solves
  1874.          the problem for OSB that the existing password files which have
  1875.          been created with IRIX' crypt() are invalid under HP-UX's crypt().
  1876.     - (efuns.c, simulate, otable, call_out, heartbeat, stralloc, rxcache)
  1877.          Added new debug_info() requests DINFO_DATA, and implemented
  1878.          the first sub-request DID_STATUS.
  1879.  
  1880. 17-Nov-1999 (Lars Duening)
  1881.     - (make_func.y, lex.c, efuns.c, util/xerq) Removed a few warnings when
  1882.          compiling under Solaris (some remain and are caused by the
  1883.          system headers); also changed the queue_t type in xerq to equeue_t
  1884.          because of a clash with the Solaris queue_t type.
  1885.     - (port.h, autoconf/configure.in, autoconf/acconfig.h, machine.h.in)
  1886.          Added a test for ssize_t.
  1887.     - (erq.c, xerq/lookup.c) Added two fixes provided by Uwe (thanks!).
  1888.  
  1889. 16-Nov-1999 (Lars Duening)
  1890.     - (comm.c, settings/osb) Removed a few warnings when compiling under
  1891.          HP-UX; and the normal erq still doesn't compile there (but xerq
  1892.          does).
  1893.     - (func_spec, array, interpret.c) The efun sort_array() now accepts
  1894.          extra arguments to be passed to the comparison function.
  1895.          (suggested by Robert from Unholy Lands).
  1896.  
  1897. 15-Nov-1999 (Lars Duening)
  1898.     - (strfuns.h) Changed "ulong" to "u_long", which should be the
  1899.          standard.
  1900.     - (mempools) Added an include of <sys/types.h> for ssize_t.
  1901.     - (settings/tubmud) Corrected some settings from "<foo>=<value>"
  1902.          to the correct "with_<foo>=<value>". (thanks, Coogan!)
  1903.     - (interpret.c) When apply() expanded an array, it didn't check
  1904.          the elements for destructed objects. (thanks, Coogan!)
  1905.     - (interpret.c) Before calling a vefun, inter_sp and inter_pc
  1906.          are updated. (thanks, Michael!)
  1907.     - (lex.c) Corrected an off-by-one error in the linenumbers
  1908.          of an inline closure. (thanks, Michael!)
  1909.     - (array.c, efuns.c, exec.h, interpret.c, prolang.y) The various
  1910.          inherit types are now distinguished by a proper "inherit_type"
  1911.          field in the inherit_t structure; as opposed to the former
  1912.          "is_extra" flag. (provided by Michael)
  1913.  
  1914. 14-Nov-1999 (Lars Duening)
  1915.     - (smalloc.c) Added first hooks for use of madvise().
  1916.     - (mud/anders) Added the diffs and extra files for the patched
  1917.          3.2.1@141 driver of Deeper Trouble 2.
  1918.     - (interpret.c) A return from within a foreach() crashed because
  1919.          foreach's hidden "variables" messed up the stack check
  1920.          in F_RETURN. (thanks, Bardioc!)
  1921.  
  1922. 11-Nov-1999 (Lars Duening)  (3.2.8-dev.155)
  1923.     - (prolang.y, interpret.c, strfuns, make_func.y) The operators "&"
  1924.          and "-" (and their assignment variants "&=" and "-=") may now
  1925.          be applied on strings.
  1926.     - (comm.c) Arguments passed to an input_to() haven't been checked
  1927.          for destructed objects. (thanks, Anders!)
  1928.     - (lex.c, stralloc) News master apply include_file() to generate
  1929.          the full pathnames of files specified in #include directives.
  1930.  
  1931. 10-Nov-1999 (Lars Duening)
  1932.     - (mud/sticklib/) Updated the diff files.
  1933.  
  1934. 09-Nov-1999 (Lars Duening)
  1935.     - (bugs/p-990901) Updated the catch_no_log() patch. (thanks, Michael!)
  1936.     - (array.c) unique_array() on an empty array crashed. (thanks, Ralph!)
  1937.  
  1938. 08-Nov-1999 (Lars Duening)
  1939.     - (simulate.c) Oops, "rename_to" has been written "rename_tp".
  1940.          (thanks, Elric!)
  1941.     - (gcollect.c) Added some DEBUG: printfs to check if the objects
  1942.          are counted properly.
  1943.     - (prolang.y) "*"::foo() now succeeds if at least one inherited
  1944.          object contains this function.
  1945.     - (prolang.y) The name table in get_type_name() was still incorrect.
  1946.          (thanks, Michael!)
  1947.  
  1948. 07-Nov-1999 (Lars Duening)
  1949.     - (settings/default, unitopia) Updated the unitopia settings, and
  1950.          commented the max. hashtable values.
  1951.     - (object.c, closure.c, parse.c, sprintf.c) Removed a couple of compiler
  1952.          warnings.
  1953.     - (prolang.y, closure.c, switch.h) Removed a memory leak in the
  1954.          compilation of top-level switch() statements.
  1955.  
  1956. 05-Nov-1999 (Lars Duening)  (3.2.8-dev.154)
  1957.     - (regexp.c) In one place, FALSE was returned instead of TRUE,
  1958.          making regexp()/regreplace() unfunctional (thanks, Zwirch!).
  1959.     - (main, gcollect.c) writex() renamed to write_x() to avoid
  1960.          a clash with AIX' writex().
  1961.     - (prolang) Some more AIX adaptions: struct s_lrvalue has to
  1962.          be defined after the rules (to be precise: after %union),
  1963.          and yyerrorf() has to use VAR_PROT() in the prototype.
  1964.     - (pkg/mysql) Added new efun db_handles() (provided by Karm).
  1965.     - (strfuns.h, smalloc.c) Added the necessary changes to compile
  1966.          under FreeBSD (thanks, Elric!).
  1967.     - (configure.in, configure) Took out the test for "-xO2" and "-xO4".
  1968.          It gave wrong results under FreeBSD, and doesn't seem to be useful
  1969.          anyway.
  1970.  
  1971. 04-Nov-1999 (Lars Duening)
  1972.     - (configure) Updated it with the script created on Solaris
  1973.          from the configure.in.
  1974.     - (mudlib/dhrystone.c) Added Hyp's Dhrystone implementation for
  1975.          test purposes (486/33MHz/Cygwin: 6.7 Dhry/s).
  1976.     - (port, main.c) Cygwin's rusage() only returns 0s, so I replaced
  1977.          it with the simulation also used for Amiga - this way we
  1978.          at least get some time information.
  1979.     - (prolang.y) "#'f == string" crashed on printing an error message
  1980.          due to a lacking typename for the #'symbol.
  1981.     - (closure.c) Numbers bigger than 255 in closures weren't compiled.
  1982.  
  1983. 03-Nov-1999 (Lars Duening)
  1984.     - (doc/LPC/foreach) Improved the documentation a bit.
  1985.     - (make_func.y) Since Solaris doesn't know stricmp() either, and
  1986.          since on Cygwin it is just a define to strcasecmp(), I just
  1987.          changed my two uses of stricmp() to strcasecmp().
  1988.  
  1989. 02-Nov-1999 (Lars Duening)
  1990.     - (prolang.y) Added "foreach(x in y)" as alternative to
  1991.          "foreach(x : y)" - without making "in" a reserved word.
  1992.     - (interpret.c) When confronted with negative starting offsets,
  1993.          strstr() returned invalid results.
  1994.  
  1995. 01-Nov-1999 (Lars Duening)  (3.2.8-dev.153)
  1996.     - (efuns.c) terminal_colour() stumbled over strings starting with
  1997.          a keyword.
  1998.     - (closure.c) The branch-rewriting was broken in @142 - using an
  1999.          invalidated variable, and rewriting only two of three branch
  2000.          types weren't good ideas at all.
  2001.     - (lex.c, prolang.y) Replaced the 'in' keyword in foreach()
  2002.          by ':' - mudlibs already use 'in' as variable name :-(
  2003.  
  2004. 31-Oct-1999 (Lars Duening)
  2005.     - (erq.c) Small fix in the IPv6 rlookup, provided by Uwe.
  2006.     - (prolang.y) Cleaned up the lvalue rules for variables a bit, and
  2007.          also removed the "dangling else" shift/reduce conflict.
  2008.     - (func_spec, lex.c, prolang.y, interpret.c, closure.c) Implemented
  2009.          the foreach() loop construct. (f-981229-18)
  2010.  
  2011. 29-Oct-1999 (Lars Duening)
  2012.     - (closure.c) An include of stddef.h was missing here, too.
  2013.     - (backend.c) In non-DEBUG mode, the interactive player wasn't set
  2014.          in the backend loop. (thanks, Heiko!)
  2015.     - (lex, prolang.y, simulate.c, exec.h) New program flag P_NO_SHADOW,
  2016.          set by the new #pragma no_shadow, disables shadowing for a
  2017.          program (suggested by Holger).
  2018.     - (efuns.c) Efuns debug_info()/object_info(), xINFO_MEMORY: also print
  2019.          resp. return the datasize of the object. (suggested by Freaky)
  2020.     - (sprintf.c) Multiples of 10 were printed without the leading digit.
  2021.     - (simulate.c) Efun rename(): the two valid_write() calls are now passed
  2022.          the operation codes "rename_from" and "rename_to" instead of
  2023.          "do_rename" twice. (suggested by Freaky)
  2024.     - (interpret.c, func_spec) call_other() now accepts arrays of objects
  2025.          and returns the call results in another array.
  2026.  
  2027. 28-Oct-1999 (Lars Duening)
  2028.     - (settings/evermore) Added.
  2029.     - (make_func.y) Linux doesn't know stricmp(), but strcasecmp(). Added
  2030.          ad-hoc define for that.
  2031.     - (swap.c) Added missing include stddef.h.
  2032.     - (Makefile.in) The high WARN setting for gcc defined -Wno-parentheses
  2033.          instead of -Wparentheses.
  2034.     - (doc/LPC/pragma) The pragmas no_clone and no_inherit weren't
  2035.          documented.
  2036.     - (smalloc.h, interpret.c) Added braces around ambigouous if-elses.
  2037.     - (exec.h, prolang.y, lex.c, interpret.c) Runtime errors within inline
  2038.          closures were reported with wrong line numbers. Reason is that
  2039.          the normal store_line_number_info() expects line numbers to
  2040.          increase and therefore ignore the #line directives used with
  2041.          inline closures. Solution was to add a new LI_BACK linenumber
  2042.          code plus creation function to decrement the current line counter.
  2043.          (thanks, Zwirch!)
  2044.  
  2045. 27-Oct-1999 (Lars Duening)  (3.2.8-dev.152)
  2046.     - (xerq/erq.c) The global variable "sockets" was not initialized.
  2047.  
  2048. 26-Oct-1999 (Lars Duening)
  2049.     - (interpret.c) In call_lambda(): moved the checks for destructed
  2050.          objects to the beginning.
  2051.     - (comm.c) If after an ERQ call back the object is found to be
  2052.          destructed, the callback is removed even if the ERQ sent
  2053.          a KEEP_HANDLE reply.
  2054.     - (regexp, rxcache, array.c, backend.c, ed) Regular expressions
  2055.          used from outside ed() throw errors instead of printing
  2056.          error messages. (b-990523)
  2057.     - (actions, func_spec) Efuns query_notify_fail(), command_stack():
  2058.          the information, which object did the last notify_fail(), is
  2059.          now stored and accessible. (f-990217-2)
  2060.     - (access_check.c, lex.c, smalloc.c, wiz_list.c, hosts/amiga/dice30.diff)
  2061.          Just for fun, and because most of the changes had been done already:
  2062.          applied the remaining Amiga-diffs to the main sources.
  2063.  
  2064. 25-Oct-1999 (Lars Duening)
  2065.     - (lex.c) Newlines in strings in (: :) closures are recognized
  2066.          and rejected. (thanks, Zwirch!)
  2067.  
  2068. 24-Oct-1999 (Lars Duening)
  2069.     Only two months until Christmas!
  2070.     - (pkg/mysql) Added the mySQL support provided by Karm (thanks!).
  2071.  
  2072. 22-Oct-1999 (Lars Duening)
  2073.     - (lex.c) Includes caused an offset-by-one for the linenumbers.
  2074.     - (comm, gcollect.c, interpret.c) input_to()s now accept closures
  2075.          for functions. (f-981229-21)
  2076.     - (prolang.y) Improved the ->() operator: the function name may be
  2077.          the same as a local variable, may be a string given as "ident"
  2078.          or a string expression given as (<expr>). (b-991019-0, f-990510,
  2079.          f-990605)
  2080.     - (prolang.y, stralloc) ->() again: a call_other() simul-efun is
  2081.          recognized.
  2082.     - (exec.h) Removed TYPE_SPACE and TYPE_TERM - nothing used them.
  2083.  
  2084. 21-Oct-1999 (Lars Duening)  (3.2.8-dev.151)
  2085.     - (prolang.y) If an object is inherited virtually multiple times,
  2086.          a wildcarded super call ("*::") calls it only once. (b-990217-0)
  2087.  
  2088. 20-Oct-1999 (Lars Duening)
  2089.     - (prolang.y) In virtual inherits, the check for duplicate virtual
  2090.          functions forgot the take the virtuality of the duplicate into
  2091.          account. (part of b-981208-3)
  2092.     - (prolang.y) A virtual inherit is ignored if the program in question
  2093.          has been inherited virtually before. (part of b-981208-3)
  2094.     - (prolang.y, interpret.c) Simulefun may now take "varargs" type
  2095.          arguments (e.g. 'x (varargs mixed arg)'). (b-990113-0)
  2096.  
  2097. 19-Oct-1999 (Lars Duening)
  2098.    Worked through a handfull of reports submitted by Rodney.
  2099.     - (doc/efun/say) Clarified the exclusion rules.
  2100.     - (interpret.c) Efun printf(): prints to NPCs are now sent to
  2101.          catch_tell().
  2102.     - (efuns.c) Prompt-closures are protected against premature
  2103.          deletion when replaced while they are executing.
  2104.     - (svalue.h, interpret.c, prolang.y) New macro addref_closure() to easily
  2105.          increment the refcount of a closure-svalue.
  2106.  
  2107. 13-Oct-1999 (Lars Duening)
  2108.     - (efuns.c) Efun terminal_colour(): when, during a wrap, spaces were
  2109.         removed from a string, this fact was not considered in the
  2110.         memory-access sanity checks. (b-991012-1)
  2111.  
  2112. 12-Oct-1999 (Lars Duening)
  2113.     - (comm.c) Added another IPv6 patch. (thanks, Uwe!)
  2114.     - (erq, xerq) Added the ERQ_RLOOKUPV6 request supplied by Uwe (thanks!).
  2115.  
  2116. 07-Oct-1999 (Lars Duening)
  2117.     - (comm, backend.c, gcollect.c) input_to() are now be nested when
  2118.          a command is executed from within an input_to(). This is not
  2119.          a real stacked input system as outlined in f-990721-0.
  2120.  
  2121. 06-Oct-1999 (Lars Duening)
  2122.     - (swap.c) Corrected a small, but fatal omission of a cast.
  2123.  
  2124. 05-Oct-1999 (Lars Duening)  (3.2.8-dev.150)
  2125.     - (efuns.c) Straightened the key recognition in efun terminal_colour().
  2126.     - (object) Added member object_t.load_id to be able to distinguish between
  2127.          objects created at the same time.
  2128.     - (func_spec, efuns) New efun clones() to find the clones of an object.
  2129.          (f-990203-00, f-990203-26)
  2130.  
  2131. 04-Oct-1999 (Lars Duening)
  2132.     - (make_func.y) %tefuns specified with 'void' parameters are
  2133.          now recognized as vefuns. (b-990320-0)
  2134.     - (make_func.y, comm.c, ed.c, lex.c, main.c, simulate.c, swap.c)
  2135.          Use of MAXPATHLEN verified.
  2136.     - (prolang.y) Implemented '++<map>[<x>,<y>]'. (b-990204-1)
  2137.     - (func_spec, object) New efuns save_value() and restore_value()
  2138.          to encode/decode values in strings. (f-981229-19)
  2139.     - (func_spec, object) Extended the efuns save_object() and
  2140.          restore_object() to save and restore directly to and from
  2141.          a string. Maybe this should be put into separate efuns?
  2142.          (f-990203-25)
  2143.  
  2144. 03-Oct-1999 (Lars Duening)  (3.2.8-dev.149)
  2145.     - (util/xerq) Commented and beautified - now that was a nice
  2146.          program to work on. I left the docs/ and lpc/ files alone,
  2147.          for the moment, though.
  2148.     - (prolang.y) The dummy code created for undefined functions was
  2149.          not aligned even with ALIGN_FUNCTIONS - the other reason
  2150.          for the crash in functionlist(). (b-990819-0, see
  2151.          26-Sep-99 as well)
  2152.  
  2153. 02-Oct-1999 (Lars Duening)
  2154.     - (doc/util/erq, util/erq) Commented and beautified the erq a bit.
  2155.          There could be done more, but I really know better things
  2156.          to do. But note that somebody (probably the folks at TubMud)
  2157.          has added the socket requests to the erq. (b-981212)
  2158.  
  2159. 01-Oct-1999 (Lars Duening)
  2160.     - (simulate, smalloc) Added a malloc statistic, which is dumped
  2161.          into the file MALLOCSTAT with the special command "status mstat".
  2162.     - (util/overhead.c) Commented.
  2163.     - (util/fundesc.c, util/make_docs/) Removed - these were programs
  2164.          for the original LPmud environment.
  2165.  
  2166. 30-Sep-1999 (Lars Duening)  (3.2.8-dev.148)
  2167.     - (func_spec, simulate) New efun copy_file().
  2168.     - (smalloc) Commented and beautified.
  2169.  
  2170. 29-Sep-1999 (Lars Duening)
  2171.     - (simulate, efuns, other files) Commented and beautified simulate.c;
  2172.          moved and removed several pieces of code which didn't belong
  2173.          there.
  2174.     - (prolang.y) The compiler thought, "int * string" yields int - a
  2175.          really silly typo (thanks, Michael!).
  2176.  
  2177. 28-Sep-1999 (Lars Duening)
  2178.     - (exec.h, closure.c, interpret.c, object.c, simul_efun.c, prolang.y)
  2179.          Changed FUNCTION_NAME into FUNCTION_NAMEP to make sure
  2180.          people (like me) don't use it directly (alignment!).
  2181.     - (array.c) Corrected a mis-use of FUNCTION_NAME() which could lead
  2182.          to Bus Errors due to misaligned data accesses (thanks, Sunblood!)
  2183.           (b-990819-0, but see 03-Oct-99 as well)
  2184.     - (sprintf) Commented, beautified, and two changes: formatting erros
  2185.          now throw an error(), and recursive arrays/mappings are recognized.
  2186.  
  2187. 27-Sep-1999 (Lars Duening)
  2188.     - (swap) Commented and beautified.
  2189.     - (stralloc) Commented and beautified.
  2190.  
  2191. 26-Sep-1999 (Lars Duening)  (3.2.8-dev.147)
  2192.     - (simul_efun) Commented and beautified.
  2193.     - (wiz_list) Commented and beautified.
  2194.  
  2195. 25-Sep-1999 (Lars Duening)
  2196.     - (interpret.c) Corrected a nasty crasher in the multiplication of
  2197.          arrays of malloced strings (thanks, Michael!).
  2198.     - (regexp) Beautified it, but didn't add many comments.
  2199.  
  2200. 24-Sep-1999 (Lars Duening)  (3.2.8-dev.146)
  2201.     - (prolang.y, lex.c, closure.c) Added #'parse_command.
  2202.     - (prolang.y) Corrected a rare problem with the code generated
  2203.          for '&(expr[x])' and '&(expr[<x])'.
  2204.     - (prolang.y, lex, make_func, lotsa files) Finally: the lexer/compiler
  2205.          tokens no longer double as machine instructions. Not only this
  2206.          simplifies include dependencies, it also gets rid of that
  2207.          dreadful F_OFFSET (and '%instrs' is gone again, too).
  2208.          *Lars bounces happily*.
  2209.     - (make_func.y, Makefile) make_func now takes arguments determining
  2210.          what to create. This greatly reduces compile times after changes
  2211.          to the LPC compiler. See the source of make_func.y for more details.
  2212.  
  2213. 23-Sep-1999 (Lars Duening)
  2214.     - (prolang.y, exec.h, svalue.h) Commented and beautified the compiler.
  2215.  
  2216. 21-Sep-1999 (Lars Duening)
  2217.     - (array.c, doc/efun/functionlist) Clarified that efun functionlist() does
  2218.          not load objects from a name, and improved the error message
  2219.          for this case.
  2220.  
  2221. 20-Sep-1999 (Lars Duening)
  2222.     - (make_func.y) Added the numeric bytecodes to the created efun_defs.c
  2223.          and intrs.h - helps with debugging sometimes.
  2224.     - (make_func.y, func_spec, prolang.h, closure.c, dumpstat.c efuns.c,
  2225.        gcollect.c, lex.c, array.c, interpret.c, swap.c, simul_efun.c,
  2226.        sprintf.c)
  2227.          Added a new func_spec-type '%instrs' to distinguish the instructions
  2228.          used as tokens from those which aren't. This allows less files
  2229.          to depend on lang.h .
  2230.  
  2231. 19-Sep-1999 (Lars Duening)  (3.2.8-dev.145)
  2232.     - (parse.c, doc/efun/parse_command) Commented and ansified.
  2233.     - (parse_old.c) Beautified, but only sparsely commented.
  2234.  
  2235. 18-Sep-1999 (Lars Duening)  (3.2.8-dev.144)
  2236.     - (mudlib/lp-245/obj/simul_efunc.c) Adapted to the new definition
  2237.          of inherit_list().
  2238.     - (stralloc) Added the parse_command() lfuns as predefined
  2239.          shared strings.
  2240.  
  2241. 17-Sep-1999 (Lars Duening)  (3.2.8-dev.144)
  2242.     - (mudlib/sticklib) Adapted the interpret.c.diff.
  2243.     - (prolang.y) Incorrect initialisation of local blocks in inline
  2244.          closures sometimes generated illegal code (thanks, Michael!).
  2245.          (also b-991026-1)
  2246.     - (array.c, interpret, doc/efun/inherit_list) Efun inherit_list()
  2247.          now prepends the returned program names with '/'es in non-compat
  2248.          mode. (thanks, Michael!)
  2249.     - (configure.in, configure) Corrected (I hope!) the tests for
  2250.          inet_ntoa() and ipv6 support.
  2251.     - (func_spec, interpret.c, doc/efun/) Efun load_name() also accepts
  2252.          strings, following a suggestion by Coogan.
  2253.  
  2254. 16-Sep-1999 (Lars Duening)  (3.2.8-dev.143)
  2255.     - (efuns.c) Documented process_string().
  2256.     - (closure.c, mud/lp-245/obj/master.c) Corrected small errors.
  2257.  
  2258. 15-Sep-1999 (Lars Duening)
  2259.     - (efuns, parse, func_spec, interpret.c) Moved process_string()
  2260.          into efuns.c and made it a tabled efun.
  2261.  
  2262. 14-Sep-1999 (Lars Duening)  (3.2.8-dev.142)
  2263.     - (closure, doc/LPC/closures, svalue.h) Ansified and documented.
  2264.     - (switch.h, prolang.y, typedefs.h) Beautified and documented the
  2265.         data structures used for the switch().
  2266.     - (exec.h) Added macros to generate code.
  2267.     - (Makefile.in) The rule running make_func did not delete instrs.h
  2268.         first.
  2269.     - (configure.in, configure) Corrected the probing for optimization
  2270.         options.
  2271.     - (hosts/unix.h) Added an additional check for the newer Cygwin
  2272.         packages (the old 'gethostname' problem).
  2273.     - (strfuns.h) *sigh* ulong is not a standard type - we have to
  2274.         clean that up later.
  2275.  
  2276. 19-Aug-1999 (Lars Duening)  (3.2.8-dev.141)
  2277.     - (prolang.y) Forgot to change one 'struct lambda' into 'lambda_t'.
  2278.     - (comm.c) Corrected a wrong if() condition in efun exec().
  2279.  
  2280. 16-Aug-1999 (Lars Duening)  (3.2.8-dev.140)
  2281.     - (actions.c) Oops, the marker_sentence was not given a valid type.
  2282.  
  2283. 15-Aug-1999 (Lars Duening)
  2284.     - (gcollect.c, parse_old.c, parse.h) The {clear,count}_parse_refs()
  2285.         functions exist in both new and old parse_command() *duh*.
  2286.     - (Makefiles) Updated all dependencies.
  2287.  
  2288. 14-Aug-1999 (Lars Duening)  (3.2.8-dev.139)
  2289.     - (my-alloca.h) Removed a declaration conflict on BeOS/PPC.
  2290.     - (settings/avalon) Updated.
  2291.     - (comm.c) Removed a compilation warning.
  2292.     - (prolang.y) Redeclaration of local scopes inside of for() statements
  2293.         did not recover gracefully.
  2294.     - (lex.c) If the driver is compiled for IPv6, the macro __IPV6__ is
  2295.         defined.
  2296.     - (autoconf/configure.in, configure) Improved tests for IPv6.
  2297.  
  2298. 13-Aug-1999 (Lars Duening)  (3.2.8-dev.138)
  2299.     - (sent.h, actions, simulate, other files) Beautified the sentence
  2300.         handling.
  2301.     - (mud/lp-245) Added mudwho-code and explanations for non-compat masters
  2302.         to the obj/master.c
  2303.     - (mudlib/) Removed the old master.c, simul_efun.c and room.h.
  2304.     - (comm, port.h, autoconf/*) Integrated the AIX and experimental IPv6
  2305.         support provided by Uwe (thanks!).
  2306.     - (object.h) Forgot to include instrs.h even though part of the
  2307.         struct object depends on F_SET_LIGHT *duh*.
  2308.  
  2309. 12-Aug-1999 (Lars Duening)  (3.2.8-dev.137)
  2310.     - (svalue.h) Created from old datatypes.h.
  2311.     - (typedefs.h) File holding the opaque definition of several globally
  2312.         used types <foo>_t (which are shortcuts for the old 'struct <foo>'s);
  2313.         mainly used to decouple the header files. 
  2314.     - (other files) Adapted to use the <foo>_t types.
  2315.  
  2316. 12-Aug-1999 (Lars Duening)  (3.2.8-dev.136)
  2317.     - (strfuns) Increased the possible size of a strbuf from 2**16 to 2**32.
  2318.     - (mempools, alloca.c, Makefiles) Added mempools: specialised allocators.
  2319.     - (array.c, lex.c, ptrtable) Added uses of mempools where useful.
  2320.  
  2321. 11-Aug-1999 (Lars Duening)  (3.2.7-dev.135 == 3.2.7-pre.1)
  2322.     - (lpmud.prj, patchlevel.h, hosts/be/Makefile) Introduced new source
  2323.         branch '<v>-<r>-<p>.*' to hold the pre-releases during the shakedown
  2324.         period before the 'official' release. Features and such in these
  2325.         pre's are fixed, only fixes for final bugs take place.
  2326.  
  2327. 09-Aug-1999 (Lars Duening)
  2328.     - (mapping.c) Efun m_reallocate() returned the old (freed) mapping,
  2329.         not the new one.
  2330.     - (interpret.c) Before every bytecode evaluation, inter_sp and inter_cp
  2331.         are updated.
  2332.     - (pkg/ip6-aix) AIX/IPv6 package added.
  2333.  
  2334. 04-Aug-1999 (Lars Duening)  (3.2.7-dev.134)
  2335.     - (util/xerq/) Corrected a couple of typos (I hate not being able
  2336.         to compile this!) (thanks, Freaky!).
  2337.     - (simulate.c) Cosmetic for 'status tables': the apply-cache stat
  2338.         lacked a divider.
  2339.  
  2340. 31-Jul-1999 (Lars Duening)  (3.2.7-dev.133)
  2341.     - (interpret.c) '*', '*=': inter_sp wasn't set properly before error()
  2342.         was called. (thanks, Michael!)
  2343.     - (array, swap.c) Swapping in an array ignores the current size limit.
  2344.         (thanks, Michael!)
  2345.     - (efuns.c) Efun terminal_colour(): the temporary buffer for the current
  2346.         line is now potentially unlimited.
  2347.     - (util/xerq/) Integrated patches from UNItopia, which remove a couple
  2348.         of warnings and works around the repeated closing of sockets.
  2349.         (thanks, Freaky!)
  2350.  
  2351. 30-Jul-1999 (Lars Duening)
  2352.     - (efuns.c) Efun trim(): forgot a check for the string end when trimming
  2353.         left. This caused trim("") to core. (thanks, Freaky!)
  2354.  
  2355. 30-Jul-1999 (Lars Duening)  (3.2.7-dev.132)
  2356.     - (gcollect.c) Oops, forgot to change two calls to free_vector() into
  2357.         free_array(). (thanks, Freaky!)
  2358.     - (interpret.c) Efun mkmapping() could have problem with oversized
  2359.         arrays.
  2360.  
  2361. 29-Jul-1999 (Lars Duening)  (3.2.7-dev.131)
  2362.     - (simulate.c) I am surprised nobody complained about this one: when
  2363.         an error occured, the runtime stack was unrolled too early and
  2364.         left the runtime_error() apply with no valid commandgiver.
  2365.     - (func_spec, simulate) New efuns set_limits(), query_limits() and
  2366.         limited() to handle runtime limits. (f-981229-11)
  2367.     - (backend, main, simulate): array, mapping, and file transfer limits
  2368.         are all settable from commandline and through the limit efuns.
  2369.     - (interpret.c, efuns.c) Code for efuns like object_info()
  2370.         now use the mudlib/sys/ includes to generated their results.
  2371.     - (interpret.c, prolang.y) The '*' and '*=' operators now allow
  2372.         to multiply strings/arrays with numbers.
  2373.  
  2374. 28-Jul-1999 (Lars Duening)
  2375.     - (lots of files) Removed trailing spaces.
  2376.     - (main, backend, lex, interpret, simulate) eval_costs are now counting
  2377.         up from 0 and are tested against a positive limit. The limit can
  2378.         be 0, in which case the eval costs are still counted but can grow
  2379.         without limit. This is just a preparation for the oncoming code,
  2380.         and might even work.
  2381.  
  2382. 27-Jul-1999 (Lars Duening)  (3.2.7-dev.130)
  2383.     - (efuns.c) Efun trim() also accepts a string of characters to trim.
  2384.     - (array.h, datatypes.h, closure.h, mapping.h) Moved the definitions
  2385.         of non-svalues back into their associated module header files.
  2386.     - (datatypes.h, stralloc.h) Wrapped setting of svalues into nice
  2387.         put_<type>() macros. For once, the sources shrank a few lines
  2388.         instead of growing :-)
  2389.  
  2390. 26-Jul-1999 (Lars Duening)  (3.2.7-dev.129)
  2391.     - (array.h, mapping.h, object.h, and dependees) Streamline the refcount
  2392.         handling in macros ref_<type>(), deref_<type>() and free_<type>().
  2393.         Not necessary in terms of typesafety, they make the source a bit
  2394.         more readable, and less likely that a ref++ is forgotten.
  2395.  
  2396. 23-Jul-1999 (Lars Duening)  (3.2.7-dev.128)
  2397.     - (lex.c, prolang.y) The inline function variables weren't initialized
  2398.         properly nor checked, leading to interesting crashes when the driver
  2399.         tried to freed non-existing memory.
  2400.     - (lex.c, strfuns) Rewrote the inline closure scanner to cope with
  2401.         linefills.
  2402.  
  2403. 22-Jul-1999 (Lars Duening)
  2404.     - (access_check.c) A null-message could cause a random memory
  2405.         write.
  2406.     - (strfuns.c) Corrected a write beyond boundary.
  2407.     - (lex.c) Inline function scanning: newlines didn't trigger a
  2408.         buffer refill in time.
  2409.  
  2410. 22-Jul-1999 (Lars Duening)  (3.2.7-dev.127)
  2411.     - (actions, func_spec) New efun 'execute_command()' implements
  2412.         a low-level access to the command parser.
  2413.     - (prolang.y, exec.h) New optional driver hook H_COMMAND, which
  2414.         replaces the driver based command handling with its own.
  2415.         (obsoletes f-990204-1 and f-990203-09)
  2416.     - (make_func.y) Lookup failures yield an error message, not just
  2417.         an exit(1).
  2418.     - (func_spec, efuns) New efun 'trim()' to trim characters from
  2419.         a string. (f-981229-24)
  2420.     - (settings/) Small corrections to 'default', added 'wunderland'.
  2421.     - (pkg/ip6/) Added the experimental IPv6 patch from Uwe (thanks!).
  2422.  
  2423. 21-Jul-1999 (Lars Duening)  (3.2.7-dev.126)
  2424.     - (settings/) Updated the tubmud settings file, added the sticklib
  2425.         file. All scripts now use 'exec' to start the configure script,
  2426.         allowing more meaningful exit codes.
  2427.     - (simulate.c) Caught errors now produce a tracedump on stdout/stderr
  2428.         (thanks, Sunblood!).
  2429.     - (mud/sticklib/) Added the StickLib changes (thanks, Doomdark!)
  2430.     - (lex.c) 'check last char before :)' stumbled over Newline characters.
  2431.     - (prolang.y) Inline closures: removed an interaction between typed
  2432.         inline closures in untyped functions.
  2433.     - (actions.c, comm) Notify-fail handling is now in actions.c, this
  2434.         also means that notify-fail messages are saved over nested
  2435.         commands.
  2436.     - (actions.c) notify_fail is available for NPCs, too: the text
  2437.         will be told to the NPC. (f-990204-5)
  2438.     - (func_spec, actions) New efun 'query_notify_fail()' returns the
  2439.         current notify-fail setting. (f-990217-2)
  2440.     - (func_spec, actions) New efuns 'command_stack()' and
  2441.       'command_stack_depth()' to query the command stack.
  2442.  
  2443. 20-Jul-1999 (Lars Duening)  (3.2.7-dev.125)
  2444.     - (simulate, interpret.c, backend.c) Player command execution is now
  2445.         stacked, meaning that after a command() the previous command giver,
  2446.         verb, etc are restored. This does not yet extend to notify-fails
  2447.         though.
  2448.     - (actions.ch) New source files holds the functions related to
  2449.         command parsing and action management.
  2450.  
  2451. 19-Jul-1999 (Lars Duening)  (3.2.7-dev.124)
  2452.     - (prolang.y) Removed a spurious debug printf().
  2453.     - (backend, call_out.c, closure.c, interpret.c, simulate.c, main.c)
  2454.         Generalized the error_recovery_info stack into a runtime context stack.
  2455.  
  2456. 18-Jul-1999 (Lars Duening)  (3.2.7-dev.123)
  2457.     - (settings) Updated the tubmud settings file.
  2458.     - (autoconf/configure.in, configure) Unfortunately it's not just
  2459.         gcc 2.8.1 on Solaris which stumble over the float/branch test.
  2460.     - (prolang.y) Removed a nasty interaction between disabled local
  2461.         scopes and for() statements (which unfortunately didn't manifest
  2462.         itself in earlier tests). Also, the local_scopes pragmas are
  2463.         check only when entering a function.
  2464.     - (otable.c) The table status threatened to print some stack garbage.
  2465.     - (main, config.h.in, interpret.c, array.c, mapping.c, object.c,
  2466.        simulate.c) Array and mapping size limits are now commandline
  2467.          options; and a setting of 0 disables the limit checks.
  2468.  
  2469. 16-Jul-1999 (Lars Duening)
  2470.     - (autoconf/configure.in, configure) Oops, a typo in configure.in
  2471.         really messed up the script.
  2472.     - (backend.c) Following a notice from Stefan Lichtenhagen, I removed
  2473.         the safety factor '*2' from f_regreplace() - the error it avoided
  2474.         was fixed in dev.28. However, if this efun should cause crashes
  2475.         again, this factor is one thing to try out.
  2476.     - (simulate.c) Stupid bug, the second: clone_object() checked the
  2477.         P_NO_CLONE flag before swapping in the program. (thanks, Manu!)
  2478.     - (lex, prolang.y) New pragma 'no_local_scopes' turns off local
  2479.         scoping to cater for legacy code; the second pragma 'local_scopes'
  2480.         turns it back on.
  2481.     - (settings/) Added settings file for Avalon (thanks, Thorsten!)
  2482.  
  2483. 16-Jul-1999 (Lars Duening)  (3.2.7-dev.122)
  2484.     - (lex, prolang.y) Added inline closures ("functionals") using the
  2485.         '(: <code/expression> :)' syntax MudOS invented. As a sideeffect,
  2486.         the lexer now knows the '#line <num>' directive, and identifier
  2487.         names may start with '$'. (thanks, Righ!) (p-990326)
  2488.     - (func_spec, interpret.c, simulate) New efun query_command() returns
  2489.         the full command given by the player (thanks, Ugh!).
  2490.  
  2491. 15-Jul-1999 (Lars Duening)  (3.2.7-dev.121)
  2492.     - (prolang.y) The first expression in a for() may define local variables
  2493.         which scope is the whole for() statement.
  2494.     - (func_spec, interpret.c) More new bitstring efuns: count_bits(),
  2495.         invert_bits().
  2496.  
  2497. 14-Jul-1999 (Lars Duening)  (3.2.7-dev.120)
  2498.     - (func_spec, interpret.c) New bitstring efuns last_bit() and next_bit().
  2499.         (thanks, Matthew!) (f-990203-14)
  2500.     - (access_allow, comm, mudlib/ACCESS.ALLOW) Access rules can take
  2501.         portnumbers into account. (idea from Gokhan, f-981211)
  2502.  
  2503. 13-Jul-1999 (Lars Duening)
  2504.     - (bugs/) Cleaned up the directory a big; created summary files b-summary
  2505.         and f-summary.
  2506.     - (func_spec, interpret, object, doc/efun/) New efun object_time()
  2507.         returns the creation time of the object. (idea from Daniel,
  2508.         f-990324-2)
  2509.     - (lex, prolang.y, simulate.c, exec.h) New pragmes 'no_clone' to disallow
  2510.         clones of an object, and 'no_inherit' to disallow inheriting a
  2511.         program. (thanks, Daniel!) (f-990324-0, p-990417-0)
  2512.     - (comm.c) Error ESHUTDOWN on read yields a proper message and removes
  2513.         the interactive player.
  2514.     - (func_spec, interpret.c) New bitstring efuns and_bits(), or_bits(),
  2515.         xor_bits(). (idea from Matthew, f-990203-14)
  2516.  
  2517. 12-Jul-1999 (Lars Duening)
  2518.     - (func_spec, interpret.c) New efuns pow(), floor(), ceil() and atan2().
  2519.     - (config.h.in, configure, interpret.c) If configuration option
  2520.         DYNAMIC_COSTS is enabled (default is off), string additions are more
  2521.         expensive for long strings (this is handy against the killer-loop
  2522.         for (s=""; s += "a"; ) ).
  2523.  
  2524. 12-Jul-1999 (Lars Duening)  (3.2.7-dev.118, 119)
  2525.     - (autoconf/configure.in, configure) gcc/cc1 2.8.1 on SunOS 5.7 falls into
  2526.         catatonia when compiling the float/branch-incompatibility test.
  2527.         Inserted a workaround.
  2528.     - (prolang.y, lex, func_spec) Scope of variables in nested local blocks
  2529.         ends with the defining block as it should. The space of such variables
  2530.         is reused for other local blocks. (f-990203-05)
  2531.     - dev.119: Small correction: function local variables (depth 2) can't
  2532.         hide function arguments (depth 1);
  2533.  
  2534. 11-Jul-1999 (Lars Duening)  (3.2.7-dev.117)
  2535.     - (machine.h.in) Oops, forgot to update this.
  2536.     - (Makefile.in, port.h) Compile-time define NO_INLINES turns off inlining.
  2537.     - (interpret, stralloc, strfuns.c, smalloc) Straightened out the
  2538.         INLINE uses.
  2539.  
  2540. 10-Jul-1999 (Lars Duening)  (3.2.7-dev.116)
  2541.     - (closure.c) Removed an erroneous errormessage when creating sefun
  2542.         closures with large indices (thanks, Daniel!).
  2543.     - (configuration, several files) Mappings have now an upper size limit
  2544.         of MAX_MAPPING_SIZE keys (defaults to 5000). (f-990708-1)
  2545.  
  2546. 09-Jul-1999 (Lars Duening)  (3.2.7-dev.115)
  2547.     - (config.h.in, autoconf/configure.in, settings/default) All of
  2548.         of config.h is now configurable (and is it just me, or was
  2549.         the original value parsing really broken?).
  2550.     - (settings/) Added files for all Muds I had a config.h of. Oh, and
  2551.         the files are now scripts in themselves :-)
  2552.  
  2553. 08-Jul-1999 (Lars Duening)  (3.2.7-dev.114)
  2554.     - (machine.h.in, port.h) port.h now knows about the supported
  2555.         (working) architectures and how to find the host-specific include
  2556.         files. HOST_INCLUDE is still recognized, but optional.
  2557.     - (machine.h.in, array.h, driver.h, port.h, interpret, simulate, random):
  2558.         Use SIZEOF_CHAR_P instead of SIZEOF_P_INT.
  2559.     - (Makefile.in) Target 'distclean' also deletes the
  2560.         config.cache/status/log files.
  2561.     - (other files) Added some documentation to the new autoconfig system.
  2562.  
  2563. 08-Jul-1999 (Lars Duening)  (3.2.7-dev.113)
  2564.   Checked in the changes provided by Reinhard (thanks!):
  2565.     - (machine.h.in, config.h.in, configure, autoconf/) Autoconfiguration
  2566.         is now based on autoconf 2. The old configuration code is in the
  2567.         subdirectory config-old/ held as backup. Special features are:
  2568.           - rxcache and UDP port can be enabled/disabled explicitely.
  2569.           - Enabling ERQ defines a symbol ERQ_INCLUDE pointing to the
  2570.             correct include file (util/erq/erq.h resp util/xerq/erq.h).
  2571.           - All config.h options can be set using parameters to configure.
  2572.             configure --help will print the (long) list of available options.
  2573.     - (func_spec) Fixed a rare case of an erroneus inclusion of send_imp()
  2574.         UDP is disabled and thus the function f_send_imp() won't be compiled.
  2575.     - (comm.c) erq.h is included only when the driver is compiled for
  2576.         using the erq demon.
  2577.  
  2578. 07-Jul-1999 (Lars Duening)  (3.2.7-dev.112)
  2579.     - (strfuns.c) Corrected off-by-one mistakes, and the length of the
  2580.         final string.
  2581.     - (datatypes.h, other files) Straightened the use of STRING_VOLATILE
  2582.         (purely cosmetic).
  2583.  
  2584. 07-Jul-1999 (Lars Duening)  (3.2.7-dev.111)
  2585.     - (strfuns, efuns, simulate): Modified efun debug_info() to return
  2586.         the status information instead of printing it. Added "malloc" as
  2587.         additional second argument to the DINFO_STATUS command.
  2588.     - (interpret) Efun get_type_info() returns whether a string is shared
  2589.         or not.
  2590.     - (simulate, smalloc): Deactivated 'debugmalloc' and
  2591.         'showsmallnewmalloced' and the associated code.
  2592.     - (simulate, efuns, dumpstat, interpret): Added option DINFO_DUMP to
  2593.         debug_info() to implement the 'dumpallobj' and 'opcprof' command.
  2594.     - (interpret.c) Efuns trace() and traceprefix() are now validated
  2595.         with the master-lfun 'valid_trace()'; the master-lfun
  2596.         'query_player_level()' is thus no longer needed.
  2597.     - (efuns, simulate, object): Efun set_is_wizard() is now optional,
  2598.         and with it the object flag O_WIZARD.
  2599.     - (object, simulate, prolang, efun): Object flag O_APPROVED is gone.
  2600.  
  2601. 06-Jul-1999 (Lars Duening)
  2602.     - (comm, simulate.c)  Undid the last change. Now it is legal again for
  2603.         the modify_command-hook to change the command_giver; this change
  2604.         stays active for the execution of the command, and the original
  2605.         commandgiver is passed to the NOTIFY_FAIL hook.
  2606.     - (simulate.c) The MODIFY_COMMAND hook is now called first, even
  2607.         before special commands like 'status' are parsed. This allows
  2608.         the hook to filter out uses of these commands.
  2609.     - (strfuns) New file holding string functions (for now).
  2610.     - (simulate, otable, rxcache, stralloc, efuns, call_out, heartbeat):
  2611.         Rewrote the status functions to use strbufs, in anticipation to
  2612.         make these special commands into real efuns.
  2613.  
  2614. 05-Jul-1999 (Lars Duening)  (3.2.7-dev.110)
  2615.     - (comm.c) include of <stddef.h> was missing.
  2616.     - (simulate.c) After the modify-command hook was called, the commandgiver
  2617.         and current object are restored their previous setting in case the
  2618.         hook changed them. (thanks, Daniel!)
  2619.  
  2620. 04-Jul-1999 (Lars Duening)
  2621.     - (closure.c) Corrected a nasty mistyping in compile_lvalue(). (thanks,
  2622.         Freaky!).
  2623.     - (lex.c, interpret.c) Removed two warnings.
  2624.     - (doc/efun) Removed the manpage for the long-gone efun query_host_name.
  2625.  
  2626. 03-Jul-1999 (Lars Duening)  (3.2.7-dev.109)
  2627.     - The driver compiles again with egcs.
  2628.     - (efuns.c) Bugfix for efun terminal_colour(): terminal_colour("bla", ([
  2629.         "bla":"blu"]), 1) returned "blu" instead of "bla". (thanks, Michael!)
  2630.     - (efuns.c) The efun sscanf() used the wrong function to report argument
  2631.         errors. (thanks, Freaky!)
  2632.  
  2633. 02-Jul-1999 (Lars Duening)
  2634.     - (hosts/be/be.h, .../Makefile, .../machine.h, other files): Adapted for
  2635.         BeOS 4.5. This involved adding numerous casts to make the now pickier
  2636.         compiler happy. But now egcs starts crashing...
  2637.     - (efuns.c) Found another shortcoming of present_clone() (and the reason
  2638.         why I didn't see errors before *blush*).
  2639.  
  2640. 01-Jul-1999 (Lars Duening)
  2641.     - (efuns.c) Fixed two nasty bugs in efun present_clone(): make_name_sane()
  2642.         could return NULL, and the comparison was done against the wrong name.
  2643.     - (interpret.h) To be safe, macro put_number() takes the sp as argument.
  2644.     - (call_out.c) When setting current_prog for efun closures, the code
  2645.         now makes sure that the program is swapped in.
  2646.  
  2647. 30-Jun-1999 (Lars Duening)  (3.2.7-dev.108)
  2648.     - (mud/lp-245/obj/simul_efun.c) Duh, had a complete brainfart yesterday
  2649.         when adapting present_clone() to compat mode.
  2650.  
  2651. 29-Jun-1999 (Lars Duening)  (3.2.7-dev.107)
  2652.     - (doc/efun) Removed the files for the long-gone efuns find_living(),
  2653.         find_player(), set_living_name(), add_worth() and wizlist().
  2654.     - (doc/efun/all_environment) Corrected a typo.
  2655.     - (efuns.c) Corrected a misformed condition in efun terminal_colour().
  2656.     - (gcollect.c) If a swap-in fails, the GC raises a fatal error (instead
  2657.         of just crashing).
  2658.     - (mud/lp-245/) Added the old LP-245 mudlib, of course adapted to
  2659.         this driver.
  2660.     - (func_spec, efuns) New efun present_clone() to find objects with
  2661.         a specific blueprint (suggested by Coogan).
  2662.  
  2663. 29-Jun-1999 (Lars Duening)  (3.2.7-dev.106)
  2664.     - (exec.h, interpret.c, call_out.c) Efun-closures are now properly
  2665.         identified, and call_outs to efun-closures set current_prog to the
  2666.         prog of the bound object. This sources still hold some DEBUG-printfs.
  2667.  
  2668. 28-Jun-1999 (Lars Duening)  (3.2.7-dev.105)
  2669.     - (interpret.c) Added some argument checks to efun terminal_colour().
  2670.     - (func_spec, doc/efun/environment) Documented that efun environment()
  2671.         can also take a string as argument.
  2672.     - (interpret.c) 'Indexing on illegal type' no longer dumps trace (what
  2673.         for did that do that any way?).
  2674.     - (main, backend.c, object.c) TIME_TO_RESET and TIME_TO_CLEAN_UP are now
  2675.         defaults for the runtime options '--reset-time' and '--cleanup-time'.
  2676.     - (interpret.c) Reactivating a destructed didn't update the number
  2677.         of listed objects.
  2678.  
  2679. 26-Jun-1999 (Lars Duening)
  2680.     - (main.c, interpret.c, smalloc.c) Cosmetics.
  2681.  
  2682. 25-Jun-1999 (Lars Duening)  (3.2.7-dev.104)
  2683.     - (lotsa files) NATIVE_MODE is gone - the only real difference it made
  2684.         was the restriction of command() to the current object only, and
  2685.         that can be handled by a simul-efun.
  2686.     - (interpret.c) Oops, privilege_violation() slightly misinterpreted
  2687.         the result from the master apply.
  2688.  
  2689. 25-Jun-1999 (Lars Duening)  (3.2.7-dev.103)
  2690.     - (lotsa files) EUIDS mode is now automatic since most of the code
  2691.         was there in any case.
  2692.  
  2693.         New runtime option '--[no-]strict-euids'
  2694.         which enables/disables the enforcement of euids known from the native
  2695.         mode. When enabled, the LPC macro "__STRICT_EUIDS__" is defined.
  2696.         The default setting is defined in config.h by STRICT_EUIDS; use
  2697.         of an old config.h with NATIVE_MODE defined has (for now) the
  2698.         same effect.
  2699.  
  2700. 24-Jun-1999 (Lars Duening)  (3.2.7-dev.102)
  2701.     - (backend, efuns.c, heartbeat, interpret.c, object, simulate,
  2702.         all config.h) OLD_RESET is gone.
  2703.  
  2704. 24-Jun-1999 (Lars Duening)  (3.2.7-dev.101)
  2705.     - (mudlib/sys/{trace.h,input_to.h,files.h,debug_info.h}: Added these
  2706.         includes with definitions for the efuns trace(), input_to(),
  2707.         file_size(), get_dir(), and debug_info().
  2708.     - (interpret, efuns, func_spec, exec.h) Finished commenting the
  2709.         interpreter.
  2710.  
  2711. 20-Jun-1999 (Lars Duening)  (3.2.7-dev.100)
  2712.     - (interpret) to_string(object) in compat mode added a leading
  2713.         slash. program_time() freed its argument before querying it.
  2714.         And recombine_free_lists() is gone for good.
  2715.     - (interpret, func_spec,  exec.h) After a long day: more comments
  2716.         added (17155 lines done, 3150 to go). In particular,
  2717.         eval_instruction() is commented *phew* (but it's still big
  2718.         and ugly).
  2719.  
  2720. 18-Jun-1999 (Lars Duening)  (3.2.7-dev.99)
  2721.     - (interpret, func_spec, exec.h)  Something new: more comments.
  2722.         (12558 lines done, 5800 to go).
  2723.  
  2724. 16-Jun-1999 (Lars Duening)
  2725.     - (interpret.c) The operators +=, -=, *=, /= now accept a float left
  2726.         and an int right.
  2727.     - (interpret, efuns) Efun terminal_colour() moved out from the interpreter
  2728.         into efuns.c. And it received comments during this move.
  2729.  
  2730. 15-Jun-1999 (Lars Duening)
  2731.     - (interpret.c) Binding an unbound lambda to two objects and destructing
  2732.         the originating object freed the lambda. (thanks, Kirnan & Michael)
  2733.  
  2734. 14-Jun-1999 (Lars Duening)
  2735.     - (driver.h, port.h, all files commented so far) New type 'Bool' and its
  2736.         smaller sibling 'CBool' introduced.
  2737.     - (autoconf/configure.in, configure, port.h, regexp, ptrtable) Replaced
  2738.         CHARBITS by CHAR_BIT, adapted the generation of CHARBIT_MASK.
  2739.     - (datatypes.h, func_spec, exec.h, interpret) Something new: more
  2740.         comments (8700 lines done, 9000 to go). Actually I started wrapping
  2741.         the bytecode interpretation into its own types and macros, which
  2742.         may increase portability, and at least make the critical places
  2743.         easier to find.
  2744.  
  2745. 13-Jun-1999 (Lars Duening)
  2746.     - (array.c) Efun inherit_list() just copies the program names, but
  2747.         doesn't make them shared. Since they aren't shared anyway, this
  2748.         makes the function much faster. (thanks, Michael!)
  2749.     - (object.c) If the H_RESET hook is a closure, a result < 0 will disable
  2750.         reset for this object. (thanks, Michael!)
  2751.  
  2752. 12-Jun-1999 (Lars Duening)
  2753.     - (interpret.c, mapping.c) Both m_indices() and map()/map_mapping()
  2754.         called check_map_for_destr() twice, wasting time. (thanks, Michael!)
  2755.  
  2756. 12-Jun-1999 (Lars Duening)  (3.2.7-dev.98)
  2757.     - (datatypes.h, func_spec, exec.h, interpret) Oh boy: more comments
  2758.         (6700 lines done, 10000 to go).
  2759.  
  2760. 10-Jun-1999 (Lars Duening)
  2761.     - (call_out.c) Adding callouts from within a callout resulted
  2762.         in the new callouts inserted in the wrong place when the active
  2763.         callout had an odd delay (and thus a negative 'time left' entry).
  2764.         If the new call_out had a MAX_INT delay, the current callout list
  2765.         was effectively disabled. (b-990214-0)
  2766.     - (backend.c) Added Michaels improvement to the swapping algorithm
  2767.         (thanks!).
  2768.  
  2769. 05-Jun-1999 (Lars Duening)
  2770.     - (smalloc.c) As I feared: trying to print more information about
  2771.         gc'ed objects may crash the driver *sigh*.
  2772.  
  2773.    Patches provided by Michael (thanks!):
  2774.     - (backend, interpret, simulate) Improved the handling of closure hooks:
  2775.         now setting a driver hook from within the hook works well, too.
  2776.     - (closure.c) symbol_variable() properly recognizes objects with
  2777.         pending program replacement.
  2778.     - (interpret.c) dump_trace() recognizes alien lfuns properly.
  2779.     - (interpret.c) Calls to alien lfun closures didn't set extern_call.
  2780.     - (interpret.c) Calls to F_UNDEF closures (closures whose object
  2781.         was destructed) generate a proper error message.
  2782.     - (swap.c) If a closure variable was changed to F_UNDEF by the garbage
  2783.         collector, the swapper now duly writes this new info into the swap file.
  2784.     - (mapping.c) During a GC, mappings didn't check for changed alien lfuns.
  2785.   Some more suggestions by Michael:
  2786.     - (interpret.c) to_object() on F_UNDEF closures returns 0.
  2787.     - (object.c) free_object() miscounted the amount of memory used by
  2788.         objects.
  2789.     - (simulate.c) Memory display in 'status' for objects and programs
  2790.         now both display '<total> (<swapped>)' (before, only the objects
  2791.         status displayed that, programs displayed '<resident> (<swapped>)' ).
  2792.     - (swap.c) If variables could not be unswapped, the swapper didn't clear
  2793.         them properly.
  2794.  
  2795. 24-May-1999 (Lars Duening)  (3.2.7-dev.97)
  2796.     - (interpret, exec.h, heartbeat.c, comm.c, make_func.y) More comments,
  2797.         really.
  2798.  
  2799. 22-May-1999 (Lars Duening)  (3.2.7-dev.96)
  2800.     - (config.h, interpret.c, closure.c) Corrected some typos.
  2801.  
  2802. 22-May-1999 (Lars Duening)  (3.2.7-dev.95)
  2803.     - (interpret.c) Guess what: more comments.
  2804.     - (interpret.c, sprintf.c) to_string() and sprintf() stumbled over
  2805.         variable closures left dangling after a replace_program(). (thanks,
  2806.         Michael!)
  2807.     - (prolang.y) insert_inherited: the loop for the case '*::f' tended to
  2808.         clobber its own control variable 'ip', causing the omission of
  2809.         function calls. (thanks, Michael!)
  2810.  
  2811. 18-May-1999 (Lars Duening)  (3.2.7-dev.94)
  2812.     - (config.h, hosts/be/config.h) Increased the default for MAX_LOCAL
  2813.         to 50.
  2814.     - (interpret.c) Even more comments.
  2815.  
  2816. 17-May-1999 (Lars Duening)  (3.2.7-dev.93)
  2817.     - (doc/efun/filter_{mapping,indices}) Corrected a wrong phrase.
  2818.         (thanks, Zwirch!)
  2819.     - (interpret.c) Some more comments.
  2820.  
  2821. 16-May-1999 (Lars Duening)  (3.2.7-dev.92)
  2822.     - (object, backend.c, dumpstat.c, efuns.c, interpret.c, simulate.c,
  2823.        sprintf.c, ../mudlib/sys/objectinfo.h, doc/efun/object_info):
  2824.         New object flag O_REPLACED for objects with replaced programs,
  2825.         so that clonep() stops flagging such blueprints as clones.
  2826.         (suggested by Michael)
  2827.     - (datatypes.h, interpret) More comments.
  2828.     - (simulate.c) Streamlined the namehandling in clone_object().
  2829.  
  2830. 14-May-1999 (Lars Duening)  (3.2.7-dev.91)
  2831.     - (backend.c) Removed one 'var might be clobbered' warning.
  2832.     - (datatypes.h, interpret) More comments.
  2833.     - (object.c) When restoring a mapping of form '([:<width>])', the <width>
  2834.         is made sure to be positive. (thanks, Michael!)
  2835.  
  2836. 13-May-1999 (Lars Duening)  (3.2.7-dev.90)
  2837.     - (datatypes.h, interpret) More comments.
  2838.  
  2839. 12-May-1999 (Lars Duening)  (3.2.7-dev.89)
  2840.     - (interpret.c, doc/efun/...) Efun symbol_function() won't create
  2841.         closures from protected lfuns of other objects. (thanks, Michael!)
  2842.     - (func_spec, comm, interpret.c, config.h, driver.h, main)
  2843.         query_mud_port() did not accept int arguments as documented; also,
  2844.         the multiport feature is no longer optional.
  2845.     - (smalloc.c) write_lpc_trace() tries to write as much information about
  2846.         an object as possible, not just 'Doesn't exist anymore'.
  2847.     - (interpret.c) destruct() now accepts destructed objects as arguments.
  2848.         (thanks, Largo!).
  2849.  
  2850. 11-May-1999 (Lars Duening)  (3.2.7-dev.88)
  2851.     - (object.c) Fixed some memory leaks on errors during a restore. (thanks,
  2852.         Michael!)
  2853.     - (interpret.c) Some more comments.
  2854.  
  2855. 10-May-1999 (Lars Duening)  (3.2.7-dev.87)
  2856.     - (interpret.c) Removed a crasher in call_lambda() on closures of
  2857.         not-inherited variables. (thanks, Michael!)
  2858.     - (closure.c) Creating a symbol_variable() now protects it against
  2859.         replace_program()s. (thanks, Michael!)
  2860.     - (array.c, efuns.c, exec.h, interpret.c, prolang.y) Duplicate virtual
  2861.         inherits are no longer listed in the result of inheritlist() and
  2862.         the various statistical functions. (thanks, Michael!)
  2863.  
  2864. 09-May-1999 (Lars Duening)  (3.2.7-dev.86)
  2865.     More patches from Michael:
  2866.     - (backend.c, interpret, gcollect.c) interpret:call_lambda() no longer
  2867.         protects closure with an extra refcount; instead old, replaced driver
  2868.         hooks are stored in an array and freed by the backend (or the
  2869.         garbage collector).
  2870.     - (backend.c) When computing a 'real soon' swapping time for objects
  2871.         with no reset, the new swap time became negative, effectively
  2872.         disabling swapping for this object.
  2873.     - (interpret.c) Improvement of efun terminal_colour(), reducing the number
  2874.         of created shared strings.
  2875.     - (simulate.c) If the loading of objects fails, the name of the object
  2876.         is printed with the error message.
  2877.     - (swap.c) If an object WILL_CLEAN_UP on swap in, the swapper doesn't
  2878.         bother to check for the function 'clean_up'.
  2879.     - (interpret.c, prolang.y) Added a couple of missing updates of
  2880.         time_of_ref.
  2881.     - (interpret.c) Fixed a crasher when using to_string() on an lfun
  2882.         closure for a swapped program.
  2883.     - (simulate.c) lookfor_object() no longer swaps in the object, instead
  2884.         the caller does it when needed. As this is rather rare, the effect
  2885.         should be reduced disk activity.
  2886.     - (ed.c, heartbeat.c) Removed two compilation warnings for printf()
  2887.         args.
  2888.  
  2889. 04-May-1999 (Lars Duening)
  2890.     - (smalloc.c) _large_malloc() didn't compile in SMALLOC_LPC_TRACE due to
  2891.         a missing 'const' specifier. (thanks, Freaky!)
  2892.  
  2893. 02-May-1999 (Lars Duening)  (3.2.7-dev.85)
  2894.     - (backend.c) time_of_ref is fudged only after a reset of a swapped
  2895.         object, not after a cleanup. Also, if the cleanup hook is a closure,
  2896.         the time_of_ref is updated manually to make sure that the cleanup
  2897.         won't occur in every backend loop.
  2898.     - (simulate.c) lookfor_object() sets the time_of_ref of an object if
  2899.         it had to swap it in. This is useful for blueprints for inheritance
  2900.         and cloning, which would thrash otherwise. (thanks, Michael!)
  2901.     - (lex.c) The test against recursive calls in _expand_define() crashed
  2902.         the driver if an error occured during the macro expansion and the
  2903.         error handling itself called macro expansion (e.g. through the
  2904.         _expand_define_() efun). For now, non-reentrant recursive calls
  2905.         are allowed again.
  2906.  
  2907. 30-Apr-1999 (Lars Duening)  (3.2.7-dev.84)
  2908.     - (backend.c) If reset or cleanup cause an object to be swapped in,
  2909.         the time_of_ref is fudged so that the object will swap out again
  2910.         pretty soon, but not immediately.
  2911.     - (hosts/be/Makefile) Re-introduced cross-compiling support for x86
  2912.         on PowerPC.
  2913.  
  2914. 29-Apr-1999 (Lars Duening)
  2915.     - (doc/efun/caller_stack_depth, HISTORY) Corrected two typos (thanks,
  2916.         Zora!).
  2917.  
  2918. 28-Apr-1999 (Lars Duening)  (3.2.7-dev.83)
  2919.     - (backend.h, closure.c, interpret.h, efuns.c) Move error_recover_info
  2920.         definition into backend.h, adapting the other files, and added
  2921.         a missing include to efuns.c
  2922.     - (interpret, exec.h, datatypes.h) Began commenting.
  2923.  
  2924. 27-Apr-1999 (Lars Duening)  (3.2.7-dev.82)
  2925.     - (heartbeat.c) 'status tables' could cause a division by 0.
  2926.     Integrated a patch from Michael:
  2927.     - (backend.c) process_objects() now checks if a swap was successful
  2928.         before setting did_swap (since some objects won't swap).
  2929.     - (interpret.c) Added some ASSIGN_EVAL_COST in critical efuns.
  2930.     - (interpret.c) call_lambda() did not update time_of_ref/O_RESET_STATE
  2931.         on calls. Furthermore, objects bound to (s)efun closures were not
  2932.         swapped in, which caused segfaults in dump_trace().
  2933.  
  2934. 25-Apr-1999 (Lars Duening)  (3.2.7-dev.81)
  2935.     - (backend.c, swap.c) Swapped-out objects are again swapped in for
  2936.         reset. Skipping the call and just setting a due-time in the
  2937.         swapper resulted in too few calls to reset(), especially with
  2938.         small swap times. (thanks, Michael!)
  2939.     - (backend.c) Removed the RESET_DEBUG code sequences.
  2940.     - (interpret.c) Calls to tefuns and vefuns assign the eval costs
  2941.         first.
  2942.     - (sprintf.c) If possible, file:line of an offending sprintf() statement
  2943.         are appended to all error messages, not just to the one printed
  2944.         on stderr.
  2945.     - (etc/icon-*.ppm) The Icon for the Gamedriver.
  2946.     - (hosts/be/{Makefile, icon-*.raw, driver.r, driver.rscr) Added the
  2947.         icon to the compiled resources.
  2948.     - (heartbeat.c) Fixed a crasher which occured when a heart_beat()
  2949.         function managed to remove all remaining objects from the hb list.
  2950.  
  2951. 19-Apr-1999 (Lars Duening)
  2952.     - (mapping.c) When adding mappings, the second summand was freed before
  2953.         the actual addition (thanks, Daniel!).
  2954.     - (doc/LPC/modifiers) added from TubMud (thanks, Fiona!).
  2955.  
  2956. 17-Apr-1999 (Lars Duening)  (3.2.7-dev.80)
  2957.     - (doc/) Small changes, improved the docs to switch, references
  2958.         and alists (thanks, Freaky!).
  2959.     - (lex.c) Bugfix from Daniel: Variables in closure may start with '_'.
  2960.     - (closure.c) Bugfix from Daniel: #'[<] indexing corrected.
  2961.     - (interpret.c) unmkmapping() also accepts key-only mappings (thanks,
  2962.         Holger!).
  2963.     - (func_spec) Efun caller_stack() was defined to return 'int' instead
  2964.         of the correct 'object *'. (thanks, Robb!).
  2965.     - (driver.h, smalloc, main) Added some 'const' to 'char *' where
  2966.         useful.
  2967.     - (main.c, lex.c) The list of predefs copied from the commandline is
  2968.         now deallocated after the defines have been entered into the
  2969.         table. This removes a spurious 'small block freed' warning on
  2970.         garbage collections.
  2971.  
  2972. 04-Apr-1999 (Lars Duening)  (3.2.7-dev.78-79)
  2973.     - Small changes, just cosmetics.
  2974.  
  2975. 01-Apr-1999 (Lars Duening)  (3.2.7-dev.77)
  2976.     - Manually copied all changes since dev.76 into the Re-Release of 3.2.6.
  2977.     - (call_out.c) Undid the change that callout can call protected
  2978.         functions: this inability was intentional for security reasons.
  2979.     - (backend.c) The consistency check of the object list was still
  2980.         active. Now the code is still there, but deactivated.
  2981.     - (doc/LPC/functions, doc/efun/call_out, doc/efun/call_other) Added
  2982.         a bit documentation regarding protected functions (thanks, Macbeth!).
  2983.     - (interpret.c, doc/LPC/operators) Subtraction allows any width of
  2984.         the subtrahend.
  2985.  
  2986. 31-Mar-1999 (Lars Duening)
  2987.     - (HISTORY, hosts/be/Makefile) Small corrections.
  2988.  
  2989. 31-Mar-1999 (Lars Duening) -- Release 3.2.6
  2990.     - Froze 3.2.6-dev.76 for release.
  2991.  
  2992. 31-Mar-1999 (Lars Duening)  (3.2.6-dev.75)
  2993.     - Changed the directory structure so that the sources are no longer
  2994.         in the top directory. But there's still a long way to go before
  2995.         a simple 'build' in the top directory does everything.
  2996.     - (doc/...) Integrated the 'driverdocs', previously maintained
  2997.         by Stefan Petri (thanks!).
  2998.  
  2999. 31-Mar-1999 (Lars Duening)  (3.2.6-dev.74)
  3000.     - (doc/efun/...) Typo corrections (thanks, Coogan and Freaky!)
  3001.     - (array.c) map_array() did not check if objects in the array were
  3002.         destructed during the execution (thanks, Righ!). (b-990329-0)
  3003.     - (util/make_docs/make_docs.c) Linux-adaption was not complete
  3004.         enough.
  3005.  
  3006. 30-Mar-1999 (Lars Duening)  (3.2.6-dev.73)
  3007.     - (lex.c) *duh* the last change tested for COMPAT, not the correct
  3008.         COMPAT_MODE define.
  3009.  
  3010. 29-Mar-1999 (Lars Duening)  (3.2.6-dev.72)
  3011.     - (lex.c) __FILE__ and __MASTER_OBJECT__ return names without leading
  3012.         slash in compat mode.
  3013.     - (backend.c, interpret.c) Fixed some warnings.
  3014.     - (doc/efun/{sizeof, widthof, load_name}) Cosmetics.
  3015.     - (comm) Undefining ERQ_DEMON did not compile (thanks, Bardioc!).
  3016.     - (prolang.y, object.c) The __INIT function is now protected instead
  3017.         of global (thanks, Freaky!).
  3018.     - (call_out.c) Efun call_out(string,...) can now call protected functions
  3019.         as well (thanks, Freaky!).
  3020.  
  3021. 28-Mar-1999 (Lars Duening)  (3.2.6-dev.71)
  3022.     - (object, simulate, backend.c, interpret.c, efun_defs.c, dumpstat.c
  3023.        smalloc.c) Changed the object list to a double-linked list, allowing
  3024.         destructed objects to be removed immediately. In itself not a big
  3025.         deal, but it allows future, more sorted incarnations of the object
  3026.         list.
  3027.     - (heartbeat.c,h) New module holding the heartbeat related code.
  3028.     - (backend, interpret, simulate) Adapted for using the new heartbeat
  3029.         code. Especially the backend loop now gives preference to the
  3030.         heartbeats over resets/swaps - the latter are slowed down to
  3031.         one reset/swap per cycle if there is not enough time.
  3032.  
  3033. 26-Mar-1999 (Lars Duening)  (3.2.6-dev.70)
  3034.     - (object, simulate, backend.c, interpret.c, efun_defs.c, dumpstat.c
  3035.        smalloc.c) Changed the object list to a double-linked list, allowing
  3036.         destructed objects to be removed immediately. In itself not a big
  3037.         deal, but it allows future, more sorted incarnations of the object
  3038.         list.
  3039.  
  3040. 26-Mar-1999 (Lars Duening)  (3.2.6-dev.69)
  3041.     - (backend.c) The logic in the computation of the average heartbeat
  3042.         stats was wired backwards.
  3043.     - (call_out.c, closure.c, comm.c, interpret.c, lex.c, regexp.c, simulate.c)
  3044.         Removed a couple of warnings when compiling under BeOS/Intel.
  3045.     - (port.c) get_current_time(): 'noted_alarms' is kept up to speed with
  3046.         'total_alarms'. (thanks, Michael!)
  3047.     - (backend, main, lex.c, interpret.c, simulate.c, func_spec, doc/...)
  3048.         After the current implementation of the free-running alarm, which
  3049.         is needed by the MAX_TIME mechanism, proved unstable on some
  3050.         platforms, the axe fell on this feature altogether. What started
  3051.         out as a nice idea was on the best way to grow into a maze of
  3052.         special cases, all ugly. Sorry, folks.
  3053.  
  3054. 25-Mar-1999 (Lars Duening)  (3.2.6-dev.68)
  3055.     - (backend.c) Corrected a possible division-by-0 in the heart
  3056.         beat status output (thanks, Freaky!)
  3057.     - (efuns.c) Efuns copy() and deep_copy() did copy quoted arrays.
  3058.         (thanks, Michael!).
  3059.     - (simulate.c, otable.c) Warnings in printf again...
  3060.     - (doc/efun/previous_object) Clarified the difference between
  3061.         previous_object() and previous_object(0).
  3062.  
  3063. 24-Mar-1999 (Lars Duening)  (3.2.6-dev.67)
  3064.     - (efuns.c) Efun deep_copy() leaked memory, and also has to copy
  3065.         arrays/mappings with just one ref (thanks, Michael!)
  3066.     - (backend.c) Oops, major fault in the changed efun heart_beat_info(),
  3067.         writing over array limits.
  3068.     - (func_spec, interpret.c, backend.c, config.h, doc/...) The
  3069.         hard time limit is now by default turned off (but can be
  3070.         activated on the command line). The efun get_eval_time()
  3071.         was renamed to remaining_eval_time() to avoid a clash with
  3072.         some mud's driver patches. See f-981229-11 and f-990324-3
  3073.         for further discussion.
  3074.     - (main.c, simulate.c, port.h) Fixes related to MSDOS_FS:
  3075.         Compiling with Cygwin under/for Windows didn't set the define.
  3076.         legal_path() was a bit too restrictive. Added the define
  3077.         to the list of options printed with '--options'.
  3078.  
  3079. 24-Mar-1999 (Lars Duening)  (3.2.6-dev.66)
  3080.     - (backend) Moved the heartbeat handling into process_objects()
  3081.         as well, which also got rid of the clumsy heartbeat table
  3082.         handling. Only the efun heart_beat_info() is slow now.
  3083.  
  3084. 24-Mar-1999 (Lars Duening)  (3.2.6-dev.65)
  3085.     - (backend, gcollect.c, interpret.c, object, otable, simulate.c)
  3086.         Modified the list of objects so that the head and the end are
  3087.         accessible through pointers. This allowed a better handling of
  3088.         resets/cleanups/swapping such that the processing can be
  3089.         aborted after ALARM_TIME and continued in a later cycle. This
  3090.         should get rid of reset/...-induced lags.
  3091.         As a result, the reset table introduced in dev.62 is no longer
  3092.         necessary, nor is the config.h constant RESET_GRANULARITY.
  3093.         backend.c still contains a sanity check in the main loop,
  3094.         just in case. (f-990323-1)
  3095.     - (otable.c) Removed another printf-related warning.
  3096.     - (main.c, simulate) The name of the master object is assured to
  3097.         be sensible (no leading '/' etc) (thanks, Freaky!).
  3098.  
  3099. 23-Mar-1999 (Lars Duening)  (3.2.6-dev.64)
  3100.     - (comm.c, efuns.c, interpret.c, otable.c) Removed a couple of possible
  3101.         mismatches between format-strings and passed arguments.
  3102.     - (hosts/unix.h, util/*) Several small tweaks for compilation under
  3103.         Solaris 2. Still, the util/Makefiles need manual changes
  3104.         in order to build correctly *sigh*
  3105.     - (otable.c) It is now legal to call rtable_remove() with an object
  3106.         which is not in the reset table - it happens when an object
  3107.         is destructed during its own reset (thanks, Zwirch!).
  3108.     - (interpret.c) If m_allocate() runs out of memory, a NULL 'mapping'
  3109.         svalue was left on the stack -> BOOM.
  3110.     - (prolang.y, simul_efun.c) Replaced bzero() by memset().
  3111.     - (main.c) The memory-reserve options had one extra 'd' in the long
  3112.         form (thanks, Freaky!).
  3113.     - (backend.c, object.c, otable.c) Made the reset handling resistant
  3114.         against errors during the evaluation of reset().
  3115.  
  3116. 22-Mar-1999 (Lars Duening)  (3.2.6-dev.63)
  3117.     - (backend.c, otable.c) Small bugfixes. Deactivated, but not deleted
  3118.         the DEBUG printfs.
  3119.  
  3120. 22-Mar-1999 (Lars Duening)  (3.2.6-dev.62)
  3121.     - (config.h, backend.c, otable, interpret.c, simulate.c, swap.c)
  3122.         Implemented new, hopefully less disruptive version of the reset
  3123.         handling. To get the old handling, define OLD_RESET in config.h .
  3124.         Under the new implementation, the objects are sorted by their
  3125.         reset times (but grouped according to RESET_GRANULARITY) which
  3126.         allows easy retrieval of the due objects. Additionally, every
  3127.         backend cycle checks for due objects, but limits the number of
  3128.         calls to whatever can be done in two seconds. After all, resets
  3129.         are not supposed to be exact.
  3130.         For now, there are a number of DEBUG printfs in the modules.
  3131.         (f-990318-0)
  3132.  
  3133. 21-Mar-1999 (Lars Duening)  (3.2.6-dev.61)
  3134.     - (ptrtable.c,h) New module holding a generalized version of the pointer
  3135.         table formerly located in object.c
  3136.     - (dumpstat.c, interpret.c, simul_efun.c, object.c) Modified to use
  3137.         the new pointer table.
  3138.     - (func_spec, efuns, doc/efun/...) New efun copy() for shallow copies,
  3139.         and deep_copy() for deep copies. (f-981229-12)
  3140.  
  3141. 20-Mar-1999 (Lars Duening)  (3.2.6-dev.60)
  3142.     - (func_spec, interpret.c) Efun clonep() now also accepts strings.
  3143.     - (port.h, main.c, comm.c, ed.c, simulate.c) Made sure that MAXPATHLEN
  3144.         is defined and used on all hosts for file name buffers
  3145.         (thanks, Freaky!).
  3146.     - (parse_old.c, prolang.y) Removed a couple of 'unwanted assignment?'
  3147.         warnings.
  3148.     - (lex.c) Reallocations of the defbuf are traced only when '-c' was
  3149.         given on the commandline.
  3150.     - (hosts/be/Makefile) Corrected a small problem in the dependency
  3151.         generation which would lead to incomplete builds.
  3152.     - (pkg/diff) Added the diff code from Ugh and Alfe.
  3153.     - (func_spec, efuns, doc/efun/...) New efun object_info().
  3154.     - (interpret.c, doc/efun/...) Efun set_next_reset() just returns
  3155.         the time until the next reset when passed 0 as argument.
  3156.  
  3157. 19-Mar-1999 (Lars Duening)
  3158.     - (alloca.c) Corrected some ugly formatting.
  3159.     - (func_spec, interpret.c, doc/efun/...) Nobody was really fond of
  3160.         'nameof()', so it's back to 'object_name()'. Well, it was worth
  3161.         a try.
  3162.     - (stralloc, sprintf.c, mudlib/master_skeleton.c doc/master/...)
  3163.         Renamed master apply 'object_name()' to 'printf_obj_name()' due
  3164.         to the clash with the new efun object_name().
  3165.  
  3166. 18-Mar-1999 (Lars Duening)  (3.2.6-dev.59)
  3167.     - (comm.c, hosts/unix.h) Fixed the broken alarm() and UDP socket handling
  3168.         for Cygwin.
  3169.     - (func_spec, backend, interpret.c, lex.c, config.h, simulate.c,
  3170.        doc/efun/...)
  3171.         Added a time-based watchdog to the interpreter: its default setting
  3172.         is given by MAX_TIME in config.h, it can be specified on the cmdline
  3173.         with '--max-time', the actual value is available through the
  3174.         macro __MAX_EVAL_TIME__, the remaining time can be queried with
  3175.         the efun get_eval_time().
  3176.     - (func_spec, interpret.c) Efun notify_fail() returns 0, not void.
  3177.         (f-990203-18)
  3178.     - (backend.c) look_for_objects_to_swap(): The call granularity was
  3179.         computed from the config.h macros, not from values set on the
  3180.         command line.
  3181.     - (func_spec, simulate.c, doc/efun/...) Efun set_this_player() also
  3182.         accepts 0 as argument (and then simply clears this_player()).
  3183.  
  3184. 17-Mar-1999 (Lars Duening)  (3.2.6-dev.58)
  3185.     - (mapping.c, otable.c, efuns.c, comm.c) Fixed a couple of warnings
  3186.         sent in by Freaky.
  3187.     - (func_spec, doc/efun/...) clonep() and blueprint() take this_object()
  3188.         as default argument (suggested by Freaky).
  3189.     - (doc/efun/{clonep, assoc, insert_alist}) Small corrections, sent
  3190.         in by Freaky.
  3191.     - (lex.c) Added __MAX_EVAL_COST__ as predefined macro (suggested
  3192.         by Chameloid).
  3193.     - (interpret.c, simulate.c) Added the file to the 'Failed to load'
  3194.         error messages (suggested by Nathan).
  3195.     - (mapping.c, doc/efun/...) Modified map() and filter() so that for
  3196.         0-width mappings the value 0 is passed as 'data' value.
  3197.     - (func_spec, interpret.c, doc/efun/...) Renamed efuns
  3198.         {filter,map}_mapping() to {filter,map}_indices(). The old names
  3199.         are still available as aliases.
  3200.     - (func_spec, interpret.c) Renamed blueprint() to load_name(),
  3201.         renamed file_name() to nameof() (the old name is still
  3202.         available as alias) and introduced program_name().
  3203.  
  3204. 16-Mar-1999 (Lars Duening)  (3.2.6-dev.57)
  3205.     - (mudlib/master.c, wk/diff.{c,man}) Wrong lineends. Ooops.
  3206.  
  3207. 16-Mar-1999 (Lars Duening)  (3.2.6-dev.56)
  3208.     - (mapping) Improved the implementation of efun m_rewidth().
  3209.     - (func_spec, interpret.c, mapping, doc/efun/filter) New
  3210.         efun filter() to filter mappings and arrays. (sort of f-981229-16)
  3211.     - (func_spec, mapping, doc/efun/...) Renamed m_rewidth() to
  3212.         m_reallocate() - this name comes closest.
  3213.     - (func_spec, interpret.c, doc/efun/...) Renamed mapping_contains()
  3214.         to m_contains(). The old name is available as alias.
  3215.     - (util/xerq/socket.c) Changed a wrong datasize in erq_accept(),
  3216.         this should improve handling of TCP sockets (thanks, Sieni!).
  3217.     - (array.c) Added an improvement to the handling of special
  3218.         cases in subtract_array() (thanks, Sunblood!). (p-990316)
  3219.  
  3220. 15-Mar-1999 (Lars Duening)
  3221.     - (func_spec, mapping, doc/efun/m_rewidth) New efun m_rewidth()
  3222.         to change the width of a mapping. (f-981229-08)
  3223.     - (func_spec, mapping, interpret.c, doc/efun/map) New efun map()
  3224.         to map arrays and full-width mappings. (sort of f-981229-16)
  3225.  
  3226. 15-Mar-1999 (Lars Duening)  (3.2.6-dev.55)
  3227.     - (func_spec, interpret.c, doc/efun/m_values) Changed efun m_values()
  3228.         to return any column of a mapping. (f-981229-07)
  3229.     - (func_spec, interpret.c, doc/efun/widthof) New efun widthof() to
  3230.         return the width of a mapping. (mentioned in f-981228-08)
  3231.     - (func_spec, interpret.c, doc/efun/m_allocate) Renamed efun
  3232.         allocate_mapping() to m_allocate().
  3233.     - (func_spec, interpret.c, doc/efun/unmkmapping) New efun unmkmapping()
  3234.         to deconstruct a mapping.
  3235.  
  3236. 14-Mar-1999 (Lars Duening)  (3.2.6-dev.54)
  3237.     - (interpret.c, efuns.c) Efuns lower_case(), upper_case(), and
  3238.         capitalize() try to reuse the passed string if possible
  3239.         (suggested by Sunblood).
  3240.     - (interpret.c, func_spec, doc/efun/caller_stack)
  3241.         New efun caller_stack() (suggested by TubMud).
  3242.  
  3243. 12-Mar-1999 (Lars Duening)
  3244.     - (otable) Commented and ansified.
  3245.     - (port.h, comm.c, simulate.c) __CYGWIN32__ replaced by __CYGWIN__.
  3246.         (b-990204-4)
  3247.  
  3248. 12-Mar-1999 (Lars Duening)  (3.2.6-dev.53)
  3249.     - (object, interpret.c) Finished commenting this module.
  3250.     - (func_spec, interpret.c, efuns) New efuns abs() (thanks, Holger!),
  3251.         upper_case(), all_environment(). (f-990203-20, f-990217-1)
  3252.  
  3253. 11-Mar-1999 (Lars Duening)  (3.2.6-dev.52)
  3254.     - (comm, lex.c) Increased the size of the buffer for the hostname in
  3255.         gethostname() from 20 to MAXHOSTNAMELEN+1 chars. The domainname
  3256.         is now determined once at startup from the hostname, removing
  3257.         the need for getdomainname() (which on some machines returned
  3258.         the NIS domain instead of the DNS domain anyway) (thanks, Freaky!).
  3259.         (p-990309-1,2).
  3260.     - (configure, autoconf/configure.in, all machine.h) Added test and
  3261.         define for <sys/param.h>. In return, the test for getdomainname
  3262.         is gone.
  3263.     - (interpret.c) F_CATCH/F_END_CATCH added the reserve to the eval_cost,
  3264.         but not the assigned_eval_cost. This could lead to amazingly
  3265.         high assigned_eval_cost afterwards. (thanks, Sunblood!)
  3266.     - (func_spec, interpret.c) efun clonep() returns just an int. The
  3267.         name of the blueprint can now be retrieved with the
  3268.         efun blueprint().
  3269.     - (HISTORY) Change the format a bit.
  3270.     - (efuns.{c,h}) Preliminary file holding all the new efuns.
  3271.     - (func_spec, efuns) New efun make_shared_string() (adapted from
  3272.         TubMud).
  3273.  
  3274. 10-Mar-1999 (Lars Duening)  (3.2.6-dev.51)
  3275.     - (object, dumpstat.c, interpret.c, port.h, simulate.c, exec.h)
  3276.         Started commenting the object module, and adapted the other files.
  3277.     - (doc/efun/*) Improved the formatting of some files.
  3278.     - (prolang.y) Better error message if a local variable is declared
  3279.         again.
  3280.     - (mudlib/master.c) Forgot to change efun308() into set_environment().
  3281.     - (config.h) SUPPLY_PARSE_COMMAND is on again by default.
  3282.  
  3283. 07-Mar-1999 (Lars Duening)  (3.2.6-dev.50)
  3284.     - (filestat.h) Oops, some compiler really don't like spurious ' even
  3285.         in inactive parts of the source.
  3286.  
  3287. 07-Mar-1999 (Lars Duening)  (3.2.6-dev.49)
  3288.     - (backend.c, swap.c) Added missing #include "random.h" statements.
  3289.     - (parse.c) old_explode_string() was missing when only F_PROCESS_STRING,
  3290.         but not SUPPLY_PARSE_COMMAND was defined. Oops.
  3291.     - (filestat.h) Added #error statement in case somebody defines FILE_STAT.
  3292.     - (config.h) SUPPLY_PARSE_COMMAND is off by default.
  3293.     - (CHANGELOG) Corrected the entry for dev.46.
  3294.     - (interpret.c) m_indices() was found to lack the code for checking the
  3295.         mapping for destructed objects. Somehow it vanished from 3.2-dev.46.
  3296.     - (prolang.y) Cleared a variable-shadowing warning.
  3297.     - (closure.c, comm.c, gcollect.c, interpret, lex.c, make_func.y,
  3298.         mapping.c, object.c, prolang.y, simulate.c, swap.c)
  3299.         Added pragmas for Metrowerks compiler to handle unused
  3300.         variables and intentional assignments in conditions.
  3301.     - (hosts/be/Makefile) Now compiles on highest warning level.
  3302.     - (interpret.h, instrs.h, exec.h, make_func.y) Broke a recursive
  3303.         include loop.
  3304.  
  3305. 06-Mar-1999 (Lars Duening)  (3.2.6-dev.48)
  3306.     - (func_spec, interpret.c, doc/efun/load_object)
  3307.         New efun load_object() to load blueprints.
  3308.     - (func_spec, interpret.c simulate, doc/efun/clone_object)
  3309.         Modified efun clone_object() to accept objects. (f-990305-1)
  3310.  
  3311. 06-Mar-1999 (Lars Duening)  (3.2.6-dev.47)
  3312.     - (simulate.c) With logging of compilations activated, if the
  3313.         compilation of an object is aborted because an inherit is missing,
  3314.         the driver logs 'needs inherit' instead of 'done' on stderr.
  3315.     - (main.c, object, simulate) Extended the object structure with the
  3316.         field 'load_name' which gives (in !compat with leading slash)
  3317.         the filename from which the object resp. a clone's blueprint was
  3318.         compiled. This field is used by the clonep() efun.
  3319.     - (func_spec, interpret.c, doc/efun/clonep) New efun clonep() added.
  3320.         I just don't know how to handle virtual object clones with it.
  3321.         (f-990203-27, sort of)
  3322.     - (main.c, hosts/be/Makefile) Added comments regarding OPCPROF.
  3323.     - (array, interpret.c, parse.c) Since the old explode_string() is now
  3324.         static in parse.c, it was renamed to old_explode_string(). This
  3325.         allows to rename new_explode_string() in array.c to explode_string().
  3326.  
  3327. 05-Mar-1999 (Lars Duening)  (3.2.6-dev.46)
  3328.     - (mapping, datatyps.h, interpret, array.c) Finished commenting the
  3329.         mappings module.
  3330.     - (parse, interpret.c)  F_DESCRIBE was never implemented, so the stubs
  3331.         are gone now, too.
  3332.     - (func_spec, simulate, doc/set_environment) Renamed efun308()
  3333.         to set_environment(). The old name is still available for now
  3334.         (and I think Hyp was the first to propose the new name). (f-981229)
  3335.     - (func_spec, interpret.c, doc/set_next_reset)
  3336.         New efun set_next_reset(). (adapted from Morgengrauen)
  3337.  
  3338. 03-Mar-1999 (Lars Duening)  (3.2.6-dev.45)
  3339.     - (mapping, datatypes.h, array.c, main.c, interpret.c, object.c, swap.c)
  3340.         More comments and cleanup of the the mapping code.
  3341.     - (backend.c) No prompt is printed to interactive users if they are
  3342.         already closing down. This can happen if the current command caused
  3343.         the disconnection, but not destruction of the player object.
  3344.     - (array, interpret.c) Applied Sunbloods optimisation of
  3345.         subtract_array(), which improves the cases 'array - ({})' and
  3346.         'array - ({ x })' by avoiding copies and alist operations. (p-990303)
  3347.     - (util/Makefile, util/xerq/Makefile) Cosmetics.
  3348.     - (util/erq.c) Applied patches from TubMud, which also introduces two
  3349.         new service types 'ERQ_ACCEPT' and 'ERQ_LOOKUP'.
  3350.  
  3351. 02-Mar-1999 (Lars Duening)  (3.2.6-dev.44)
  3352.     - (mapping, datatypes.h) More comments.
  3353.     - (util/xerq) Added Brian Gersts 'x-erq' demon (formerly 'tw-erq') as
  3354.         an alternative to Amylaar's original erq. So far it's a quick
  3355.         and dirty adaption. Thanks, Brian!
  3356.     - (main.c, simulate.c, gcollect.c) Removed the last FILE_STAT extra
  3357.         code.
  3358.     - (lotsa files): The following features are no longer optional resp.
  3359.         available: (f-981229-01)
  3360.           OLD_PREVIOUS_OBJECT_BEHAVIOUR: gone
  3361.           OLD_EXPLODE_BEHAVIOUR:         gone
  3362.           FLOATS:                        always available
  3363.           TRANSCENDENT_FUNCTIONS:        always available
  3364.           NO_XVARARGS:                   gone
  3365.           MAPPINGS:                      always available
  3366.         SUPPLY_PARSE_COMMAND is still there... for now.
  3367.  
  3368. 01-Mar-1999 (Lars Duening)
  3369.     - (prolang.y) Undid most of the patch applied yesterday, because, as
  3370.         Sunblood and Chameloid pointed out, removing duplicate virtual
  3371.         inherits collides with p-990217 and results in sporadic losses
  3372.         of inherited functions *sigh*. However, the bugfix itself
  3373.         is ok and does stay.
  3374.  
  3375. 28-Feb-1999 (Lars Duening)  (3.2.6-dev.43)
  3376.     - (prolang.y) Implemented the patch for the initialisation of
  3377.         virtually inherited variables (thanks, Sunblade!). (p-990227)
  3378.  
  3379. 28-Feb-1999 (Lars Duening)  (3.2.6-dev.42)
  3380.     - (main.c) '--options' didn't print absolute swap paths correctly.
  3381.     - (dumpstat.c, object.h, interpret.c, simulate.c) The evalcosts are
  3382.         now also counted per object (in the variables ticks and gigaticks),
  3383.         and of course listed in the OBJ_DUMP and the debug_info(). (adapted
  3384.         from Morgengrauen)
  3385.     - (filestat.c, all config.h and Makefiles) Deactived the FILE_STAT
  3386.         accounting, but left the filestat.h in place for now - it might
  3387.         come in handy later.
  3388.     - (prolang.y) Variables in variable-only objects are now properly
  3389.         initialized by __INIT() (thanks, Sunblade!).
  3390.  
  3391. 24-Feb-1999 (Lars Duening)  (3.2.6-dev.40)
  3392.     - (random) New implementation using the Mersenne Twister.
  3393.  
  3394. 22-Feb-1999 (Lars Duening)  (3.2.6-dev.39)
  3395.     - (sprintf.c) Increased the size of the buffer for the string to be
  3396.         created from 10KBytes to 64KBytes (suggested by Woody).
  3397.     - (backend.c, swap.c) reset() is not called in objects which are swapped
  3398.         out or which haven't been touched since the last reset(). Also, if
  3399.         an object is swapped in after its due reset time, a new reset time
  3400.         is set. (adapted from Morgengrauen)
  3401.     - (prolang.y) Too big mapping aggregates generate a compile time error.
  3402.         (adapted from Morgengrauen)
  3403.     - (interpret.c) Illegal offsets in get_line_number() no longer crash
  3404.         the driver during a tracedump, but 'just' generate a diagnostic.
  3405.         (adapted from Morgengrauen)
  3406.     - (comm.c, telnet.h) Added telnet options for X Display location and
  3407.         authentification. (adapted from Morgengrauen)
  3408.  
  3409. 18-Feb-1999 (Lars Duening)
  3410.     - (interpret.c) Bad types to [x..] ranges produce a meaningful error
  3411.         message.
  3412.  
  3413. 17-Feb-1999 (Lars Duening)  (3.2.6-dev.38)
  3414.     - (interpret.c, prolang.y) Applied p-990217 from Sunblood (thanks!),
  3415.         which fixes b-981201 (calls to virtually inherited function lose
  3416.         track where the parents variables are) and b-981208-4 (redefinitions
  3417.         of virtually inherited functions). As a sideeffect, "*":: may now
  3418.         call the same function repeatedly if it is virtually inherited through
  3419.         different parent lines. I don't like this behaviour, but right now
  3420.         I don't grok the compiler well enough to change this. Consider it
  3421.         a bug!
  3422.     - (interpret.c) sizeof(mapping) checks the mapping for destructed
  3423.         objects first (thanks, Holger!) (b-990217-2)
  3424.  
  3425. 16-Feb-1999 (Lars Duening)  (3.2.6-dev.37)
  3426.     - (be/Makefile) the generated executable is tagged with the proper
  3427.         version number (using setversion).
  3428.     - (interpret) sapply_int() and apply_low() take a flag argument,
  3429.         allowing to override any protection by static/protected keywords.
  3430.         This is used in apply_master_ob() to allow the master applies
  3431.         to be static; the earlier solution of setting current_object
  3432.         messed up the previous_object() relation (*doh*!), causing
  3433.         security systems to malfunction. sapply() itself is now a mere
  3434.         #define for sapply_int(). (b-981110-0)
  3435.  
  3436. 15-Feb-1999 (Lars Duening)  (3.2.6-dev.36)
  3437.     - (INSTALL) A few small changes (thanks, Patrick!).
  3438.     - (my-rusage.h) Added an extra check for HPUX; I hope it uses the
  3439.         correct definition of timeval now for RUSAGE_TIME (thanks, Gum!).
  3440.         (b-990203-3)
  3441.     - (prolang.y) Corrected wrap-around problem when programs larger
  3442.         than 64K are compiled (thanks, Daniel!).
  3443.     - (call_out.c, interpret.c) Whenever a callout on an efun closure occurs,
  3444.         current_prog is set to NULL. Should an error occur, the dump_trace()
  3445.         will recognize this value and not try to derefence it (what caused
  3446.         the bugs p-990203-1 and b-990207 in the first place). The previous
  3447.         fix to this problem didn't quite work because it ignored that
  3448.         ob->prog might have been swapped out. However, should more places
  3449.         crop up where current_prog has to be tested for NULL, introducing
  3450.         a fake struct program for efun closures might be the better solution
  3451.         in the long run (as suggested by p-990203-1, second patch).
  3452.     - (interpret.c) Added new function push_valid_ob(object) which pushes
  3453.         the given object onto the vm stack, unless the object is destructed
  3454.         in which case the number 0 is put onto the stack. This function is
  3455.         used in various places to protect apply_master_ob() against destructed
  3456.         objects (esp. calls to privilege_violation(), heart_beat_error(),
  3457.         valid_read() and valid_write()) (thanks, Sunblood!) (b-981226-0).
  3458.     - (interpret.c) apply_master_ob() temporarily sets current_object to
  3459.         the master object, allowing the master functions to be static.
  3460.  
  3461. 10-Feb-1999 (Lars Duening)  (3.2.6-dev.35)
  3462.     - (call_out.c) Callouts did not set up current_prog, this caused
  3463.         the tracedump to crash should an error occur in a callout to
  3464.         an efun closure (thanks, Sunblood and Logic!) (p-990203-1,
  3465.         b-990207).
  3466.     - (call_out.c) Callouts no longer confuse 'command_giver destructed
  3467.         meanwhile' with 'no command_giver to begin with' (thanks, Sissi
  3468.         and Tmm!) (b-990106-0, b-990204-0)
  3469.     - (closure.c) Made #'++/#'-- work (thanks, Zwirch!) (b-990204-3).
  3470.     - (comm.c) During logon, current_interactive is set to the
  3471.         object itself (thanks, Daniel!) (p-990203-3).
  3472.     - (comm.c) When doing I/O, no output is sent to destructed snoopers
  3473.         (thanks, Zwirch!) (b-990204-2).
  3474.     - (Makefile) Updated dependency generation for mkdepend 1.5.
  3475.     - (interpret.c) terminal_colour: Fixed a memory leak of the stack
  3476.         arguments and auxiliary strings - on Tubmud the leak was severe
  3477.         enough to make the GC last several hours (thanks, Sunblood!)
  3478.         (p-990203-0, b-990203-1)
  3479.     - (interpret.c) If adding to an array caused it to hit the upper limit,
  3480.         its memory was freed nevertheless. Subsequent accesses caused all
  3481.         sorts of interesting effects (thanks, Daniel and Zora!) (p-990203-2,
  3482.         b-990203-5).
  3483.     - (interpret.c) terminal_colour() correctly wraps strings of one less
  3484.         the wrap limit (thanks, Chameloid!) (b-990210).
  3485.     - (interpret.c) A call_lambda() on a CLOSURE_IDENTIFIER makes sure
  3486.         that the variable is swapped in (thanks, Sunblood and Matthew!)
  3487.         (b-990203-0, b-990203-6).
  3488.     - (func_spec, interpret.c) to_int(), to_object() and to_float() accept
  3489.         their target data type as argument (thanks, Zora and Zwirch!)
  3490.         (b-980922-0, f-980928-0).
  3491.     - (prolang.y) Applied a patch fixing a potential crasher (thanks, Daniel!)
  3492.         (p-990203-5).
  3493.     - (sprintf.c) Added guards against values < 1.0 to the use of log10
  3494.         when estimating the number of digits to print (thanks, Chameloid!)
  3495.  
  3496. 12-Dec-1998 (Lars Duening)  (3.2.6-dev.34)
  3497.     - (make_func.y, Makefiles) The file efun_defs.c is written directly
  3498.         my make_func, not just dumped to stdout. The generated lang.y
  3499.         now bears a notice that the file is generated automatically.
  3500.     - (mapping) First comments added.
  3501.  
  3502. 10-Dec-1998 (Lars Duening) -- Release 3.2.5
  3503.     - Froze 3.2.5-dev.33 for release.
  3504.  
  3505. 09-Dec-1998 (Lars Duening)  (3.2.5-dev.32)
  3506.     - (make_func.y, func_spec) Commented and ansified.
  3507.  
  3508. 08-Dec-1998 (Lars Duening)
  3509.     - (lex.*) Commented and ansified.
  3510.     - (comm.c) At the end of a session the driver does no longer
  3511.         send 'Closing down' to the socket.
  3512.  
  3513. 07-Dec-1998 (Lars Duening)
  3514.     - (simulate) New function check_no_parentdirs() checks a pathname
  3515.         for parent dir specifications (e.g. '/../').
  3516.     - (sprintf) This is actually an old change, but I forgot to log
  3517.         it at that time: increased the size of an internal buffer
  3518.         used to print float numbers to prevent crashes with big floats.
  3519.         Additionally the code tries to estimate and adjust the size of
  3520.         the output before it prints the float, and tests for a buffer
  3521.         overrun and aborts the driver with a fatal() if it happens
  3522.         (b-980420).
  3523.  
  3524. 06-Dec-1998 (Lars Duening)  (3.2.5-dev.29)
  3525.     - (port.h) When compiling with the GNU compiler, _GNU_SOURCE is
  3526.         defined.
  3527.     - (swap.c) A seek error when trying to write a (new) block to
  3528.         the swap file is no longer a fatal() error.
  3529.     - (Makefile.in, util/Makefile) A normal make in util/ no longer
  3530.         attempts to install the binaries. To do that, use the target
  3531.         'install' in util/ or 'install-utils' in the main directory.
  3532.  
  3533. 04-Dec-1998 (Lars Duening)
  3534.     - (ed.c) Oops, had an embedded \0 character in a help text.
  3535.     - (main.c) The version number printed on --version and --options
  3536.         now distinguishes real releases and development versions.
  3537.     - (simulate.c) legal_path() uses a refined test for '..'-directory
  3538.         specifications, now being able to tell these apart from harmless
  3539.         uses like '..file' or '...' (thanks, Fiona!).
  3540.  
  3541. 03-Dec-1998 (Lars Duening)  (3.2.5-dev.28)
  3542.     - (backend.c) f_regreplace(): reallocation-condition was 'space < 0',
  3543.         instead of 'space <= 0' which could cause memory writes just one
  3544.         byte beyond the allocated block (b-981202-2).
  3545.     - (interpret.c) dump_trace() and get_line_number() lacked the handling
  3546.         of ALIEN_LFUN_CLOSURE calls, signified by a 0-valued pc on the
  3547.         control stack. This caused runtime errors in funcalls to
  3548.         symbol_function()s to crash in the error handling.
  3549.  
  3550. 02-Dec-1998 (Lars Duening)  (3.2.5-dev.27)
  3551.     - (lotsa files) Replaced tab characters with spaces.
  3552.     - (comm.c) Under Linux, a special handler is used to ignore SIGPIPEs,
  3553.        since the provided SIG_IGN is just a one-shot handler (thanks,
  3554.        Blackcat!).
  3555.  
  3556. 01-Dec-1998 (Lars Duening)  (3.2.5-dev.26)
  3557.     - (main.c, ed.c, port.h) Cosmetics.
  3558.     - (simulate.c) Efun command() now returns 0 when the target object
  3559.         or the current object are destructed.
  3560.         Similar, the handling for a string H_MODIFY_COMMAND hook did
  3561.         not check if the command_giver is destructed. If the gamedriver
  3562.         was compiled with -DDEBUG, this caused a fatal error 'apply()
  3563.         on destructed object'.
  3564.     - (interpret.c) call_lambda() increments the refcount of lambda
  3565.         closures while executing their code. This is important
  3566.         for driver hook closures which may first destruct and then
  3567.         reload the master. Without the refcounting, this would delete
  3568.         the bytecode while it is executed (thanks, Sunblade!).
  3569.     - (patchlevel.h)
  3570.         Correcte the automatic generation of release dates.
  3571.  
  3572. 30-Nov-1998 (Lars Duening)
  3573.     - (closure.c) Compensated a (propable) optimizer error for Linux/gcc.
  3574.         See C_COMPILER_BUGS for details.
  3575.     - (port.h) The replacement define for strrchr() was faulty.
  3576.  
  3577. 27-Nov-1998 (Lars Duening)  (3.2.5-dev.25)
  3578.     - (simulate.c) One line was lost in error(), messing up the
  3579.         command_giver in a heart_beat error.
  3580.     - (interpret.c) Experimented with the TubMud patch to mark
  3581.         efun closures by clearing csp->prog. However, the driver
  3582.         interprets this value as 'bottom of cs stack' and thus
  3583.         gets confused in F_RETURN and propably other places, too.
  3584.  
  3585. 25-Nov-1998 (Lars Duening)  (3.2.5-dev.24)
  3586.     - (comm.*) Commented and converted to standard C. Also removed
  3587.         the portal fragments - they didn't work anyway.
  3588.     - (call_out.*, dumpstat.*, ed.*, gcollect.*) Commented and converted
  3589.         to standard C. Also improved a few of the helpfiles of the
  3590.         editor.
  3591.     - (my-rusage.h, port.*, comm.*, hosts/be/be.h) Resolved some minor
  3592.         issues under BeOS/x86.
  3593.     - (main.c) Fixed a small problem in the option parsing.
  3594.     - (object) The program renumber moved in here from gcollect.
  3595.  
  3596. 21-Nov-1998 (Lars Duening)
  3597.     - (hosts/fcrypt) Removed.
  3598.     - (comm.c) Renamed from comm1.c
  3599.  
  3600. 20-Nov-1998 (Lars Duening)
  3601.     - (lotsa files) MSDOS support removed. Parts of the driver wouldn't
  3602.         compile under MSDOS anyway. However, the support for the MSDOS
  3603.         filesystem is still there.
  3604.  
  3605. 19-Nov-1998 (Lars Duening)
  3606.     - (comm1.c, config.h) The ERQ send buffer size is now configurable
  3607.         in config.h, too. Also, the default size is now 1KByte for
  3608.         better throughput.
  3609.     - (lex.c, main.c) New defines __ERQ_MAX_SEND__ and __ERQ_MAX_REPLY__ if
  3610.         if compiler is defined for ERQ support.
  3611.         Both changes are taken from the x-erq distribution of Brian Gerst.
  3612.     - (driver.h) If CATCH_UDP_PORT is not defined, UDP_SEND is made
  3613.         undefined, too.
  3614.  
  3615. 18-Nov-1998 (Lars Duening)
  3616.     - (lex.c) Compat mode drivers define __COMPAT_MODE__ (meant to
  3617.         replace COMPAT_FLAG eventually); native mode drivers define
  3618.         __NATIVE_MODE__. Similar, a driver using euids defines __EUIDS__.
  3619.     - (access_check.c) Sometimes the "Can't stat ACCESS_FILE" message
  3620.         was generated for no reason.
  3621.     - (mudlib/test_master.c) Extended the master to use normal
  3622.         add_actions().
  3623.  
  3624. 15-Nov-1998 (Lars Duening)
  3625.     - (comm1, sent.h, simulate) Began ansification of comm1.c .
  3626.         Moved the definition of the input_to structure from sent.h
  3627.         to comm1.c
  3628.     - (Copyright, CREDITS) Some cleanup.
  3629.  
  3630. 11-Nov-1998 (Lars Duening)
  3631.     - (smalloc.c) Ups, srealloc() must not be static when compiling
  3632.         with SBRK_OK, as it implements the realloc() function then.
  3633.     - (interpret.c, simulate.c) Added some #ifdef DEBUG...#endif
  3634.         statements where appropriate.
  3635.     - (gcollect) Variable time_last_gc was not visible when compiling
  3636.         with MALLOC_sysmalloc.
  3637.  
  3638. 10-Nov-1998 (Lars Duening)
  3639.     - (interpret.c, my-rusage.h, port.h) A few changes to accomodate
  3640.         SunOS4.
  3641.     - (lex.c) Only regular files can be used as include files; before
  3642.         it was possible to include directories.
  3643.  
  3644. 09-Nov-1998 (Lars Duening)
  3645.     - (lex.c) Replace the alloca()d buffers in _expand_define() with
  3646.         once-xalloc()ed ones. In DEBUG mode, recursive calls to
  3647.         _expand_define() are caught.
  3648.     - (lex.c, patchlevel.h) Non-release versions have a version number
  3649.         of the form '3.2.5-dev.16'.
  3650.     - (interpret.c) Corrected an off-by-one error in the stack handling
  3651.         of mapping_contains() (b-980922-1).
  3652.  
  3653. 08-Nov-1998 (Lars Duening)
  3654.     - (my-alloca.h) If alloca.c is used, the system alloca files
  3655.         are not included - in most cases they define alloca() to
  3656.         something which is not covered by alloca.c, kind of spoiling
  3657.         the desired effect.
  3658.     - (lex.c) If alloca.c is used, a call to alloca(0) is made after
  3659.         each use of _expand_define(), to keep the memory usage low.
  3660.     - (hosts/be/machine.h, .../Makefile)
  3661.         alloca.c is no longer used.
  3662.  
  3663. 04-Nov-1998 (Lars Duening)
  3664.     - (access_check.c) If the ACCESS_FILE can't be read, an error
  3665.         message is printed to stderr.
  3666.     - (comm1.c) Sorted out the BeOS blocking socket problem.
  3667.  
  3668. 03-Nov-1998 (Lars Duening)
  3669.     - (func_spec, interpret.c, prolang.y) F_SWAP and F_BREAK_POINT
  3670.         are compiled in only when the efuns are actually defined.
  3671.         By default, they aren't.
  3672.     - (simulate.c) Removed the remaining debug outputs.
  3673.     - (closure.c) The branch rewriting code, responsible for changing
  3674.         BRANCHes into LBRANCHes when a closure grows big in size, did
  3675.         not correct 16-Bit offsets for the new target addresses of new
  3676.         code. The applied fix solves the problem for UNItopia (using <>
  3677.         as #include specifier), but might not be sufficient for all
  3678.         cases. Therefore, two DEBUG: messages remain to warn if this
  3679.         feature is used.
  3680.     - (hosts/be/*) Adapted for R4/x86.
  3681.     - (*.c) Removed most of the 'Possibly unwanted assigment' warnings.
  3682.  
  3683. 02-Nov-1998 (Lars Duening)
  3684.     - (simulate) Corrected bugs in make_name_sane() and load_object().
  3685.         The debug outputs are still in place for now (b-981029-0).
  3686.  
  3687. 01-Nov-1998 (Lars Duening)
  3688.     - (hosts/be/Makefile) Adapted to BeOS R4.
  3689.     - (simulate) The functions find_object() and find_object2() are
  3690.         merged into one function lookfor_object(). For the old calls
  3691.         the macros get_object() and find_object() are available
  3692.         (note the subtle shift in naming!). This reduces the number
  3693.         of calls to make_name_sane().
  3694.         The function load_object() is no longer exported.
  3695.     - (simulate) Rewrote the load_object() to use a loop for the
  3696.         iterative compilation process instead of tail recursion.
  3697.     - (patchlevel.h) Automatized the versioning to use PRCS keywords.
  3698.     - (comm1.c) After processing a received UDP packet, the evalution
  3699.         costs are cleared (thanks, Tucita!) (p-981027-0).
  3700.     - (main.c) The argument parser printed the wrong option in
  3701.         one error message (b-980925-1).
  3702.     - (config.h, hosts/*/config.h) Increased the limit for bit strings
  3703.         to 6144 Bits (using 1KB memory).
  3704.     - (interpret.c) Out-of-bounds error message for the bit efuns printed
  3705.         garbage instead of the faulty bitnumber (b-980925-0).
  3706.  
  3707. 09-Oct-1998 (Lars Duening)
  3708.     - (array.c, backend.c) Added some checks if memory allocations
  3709.         actually succeed.
  3710.  
  3711. 23-Sep-1998 (Lars Duening) -- Release 3.2.4
  3712.     - (simulate.c) load_object() The code cleaning up the filename did
  3713.         not check if an object with the 'sane' filename already exists.
  3714.         This lead to duplicate entries in the object table and thus
  3715.         fatal driver aborts. Furthermore, the code carelessly modified
  3716.         the string passed, causing disruptions in the shared string
  3717.         table.
  3718.     - (doc/efun/terminal_colour, doc/efun/query_mud_port) added.
  3719.  
  3720. 22-Sep-1998 (Lars Duening)
  3721.     - (filestat.*) Oops, the one statistic necessary to detect multiple
  3722.         uses of a file in one command was missing. Corrected that.
  3723.  
  3724. 21-Sep-1998 (Lars Duening) -- Release 3.2.3
  3725.     - (array.c) Changed order_alist() to use standard conformant pointer
  3726.         arithmetics.
  3727.     - (backend) Added the statistic 'total_player_commands'.
  3728.     - (filestat.*) Statistics module counting the number and type of
  3729.         file usages (read, write, delete, read for compilation, read
  3730.         for inclusion, read for restore_object, write for save_object).
  3731.         The statistic is enabled by defining FILE_STAT in config.h.
  3732.         The statistic is appended to the file /FILESTAT when the
  3733.         special command 'status files' is given.
  3734.     - (access_check.c, backend.c, comm1.c, dumpstat.c, main.c, gcollect.c,
  3735.        lex.c, main.c, object.c, simulate.c, various Makefiles)
  3736.          Adapted for filestat.
  3737.     - (main.c) Beautified the --options output.
  3738.     - (swap.*, main.c) New commandline option '--swap-compact' to put
  3739.          the swapper in the "compact mode". In this mode, free space in
  3740.          the swapfile is reused immediately; in contrast to the default
  3741.          mode in which the reuse is determined by low/high watermarks.
  3742.  
  3743. 20-Sep-1998 (Lars Duening)
  3744.     - (interpret.c) F_MAPPING_CONTAINS returned destructed objects since
  3745.         it didn't check the results of get_map_lvalue() properly (thanks,
  3746.         Fiona and Zora!).
  3747.     - (backend.c) Reallocation of the heartbeat array now conforms more
  3748.         to the standard.
  3749.  
  3750. 14-Sep-1998 (Lars Duening) -- Release 3.2.2
  3751.     - (array.c) One statement was at the wrong place in order_alist(),
  3752.         causing a malfunction in explode().
  3753.     - (closure.c) store_case_labels(): another crasher removed, this
  3754.         time two loops assumed that the variables local to their body
  3755.         keep their values between two iterations.
  3756.     - (interpret.c) As in closure.c, loop body variables are moved
  3757.         outside their loops if they are meant to be persistant.
  3758.     - (interpret.c) A misplaced cast broke sscanf().
  3759.     - (backend.*, hash.*) Beautified and commented.
  3760.     - (main.*) Marked the boolean commandline parameters as such.
  3761.          The gamedriver announces itself as 'LDMud'.
  3762.     - (patchlevel.h) Changed version number from 03.02.1@<patchlevel>
  3763.         to 3.2.<patchlevel> (note the missing leading zeroes!).
  3764.     - (CHANGELOG) renamed from CHANGELOG.OSB.
  3765.     - (HISTORY) new file for a user-oriented summary of the changes.
  3766.  
  3767. 10-Sep-1998 (Lars Duening)
  3768.     - (alloca.c) Beautified.
  3769.     - (simulate.c) load_object: Extended the sanity checks for filenames
  3770.         a bit: multiple '/' are collapsed into just one (thanks for the
  3771.         idea, Zora!).
  3772.  
  3773. 05-Sep-1998 (Lars Duening)
  3774.     - (main.c) Oops, small typo in options() (thanks, Woody!).
  3775.         And the short command options are now case sensitive as they
  3776.         should be.
  3777.     - (closure.c) Omission of a seemlingly harmless cast caused
  3778.         the driver to core when compiling a switch. Unfortunately, my
  3779.         simple test_master.c didn't catch this. *sigh* We need a proper
  3780.         testsuite...
  3781.     - (ed.c, interpret.c, lex.c, mapping.c, parse.c, prolang.y, sprintf.c)
  3782.         Checked for and corrected similar casts.
  3783.     - (swap.c) Re-added Macbeth's watermark handling for the reusage
  3784.         of free-space, though for now it's deactivated .
  3785.     - (*.c, *.y) Added some parentheses as suggested by gcc to make the
  3786.         code clearer.
  3787.     - (comm.*, interpret.c) Replace the define MESSAGE_FLUSH by the
  3788.         variable message_flush, keeping gcc happier.
  3789.     - (prolang.y) Bugfix from mubo@silicondream: If a program defined
  3790.         __INIT() but didn't implement it, later inheriting of this
  3791.         program crashed the driver.
  3792.     - (port.h, interpret.*, prolang.*, stralloc.*) New macro LOCAL_INLINE
  3793.         for compilers which can inline a function locally while at the
  3794.         same time offering it for external linkage.
  3795.  
  3796. 02-Sep-1998 (Lars Duening)
  3797.     - (array.*) Commented and converted function defs to STD-C style.
  3798.     - (array.c) Small improvements to unique_array() (boy, that code
  3799.         is really old!).
  3800.     - (main.c) Some warnings about unused variables prevented.
  3801.  
  3802. 18-Aug-1998 (Lars Duening)
  3803.     - (datatypes.h) New include file declaring all commonly used
  3804.         datatypes of the virtual machine (svalue, vector, etc).
  3805.         interpret.h keeps the interpreter related declarations only.
  3806.         This also unclutters the struct svalue/smalloc.h relationship
  3807.         a bit.
  3808.  
  3809. 17-Aug-1998 (Lars Duening)
  3810.     - (main.c) --options prints all the compilation options, --version
  3811.         just the version. --help shortened to just list all commandline
  3812.         options, --longhelp prints an elaborate description of these.
  3813.  
  3814. 16-Aug-1998 (Lars Duening)
  3815.     - (access_check.*) Commented, converted function defs to ansi style.
  3816.     - The old access control using the ACCESS.DENY file is gone.
  3817.     - (patchlevel.h) The GAME_VERSION define moved from config.h into here.
  3818.     - (main.*) Commented, converted function defs to ansi style.
  3819.         Rewrote the commandline argument parser. Most options are now
  3820.         available in a short and long version; --version prints all
  3821.         sorts of compilation options as well. New option --help.
  3822.     - (driver/invocation) New documentation: driver invocation.
  3823.  
  3824. 13-Aug-1998 (Lars Duening)
  3825.     - Updated the hosts/*/config.h files.
  3826.     - (hosts/be/be.h) The host dependent init makes sure that the erq
  3827.         is not started automatically, even if the option to do so is
  3828.         set in config.h
  3829.     - (my-rusage.h) new, a wrapper for the rusage related stuff.
  3830.     - (hosts/unix.h) received all the Unix specific portability
  3831.         definitions from driver.h (this includes the cygnus win32
  3832.         environment).
  3833.       (port.h) received the remaining host dependent definitions, so that
  3834.       (driver.h) can be dedicated to provide global definitions.
  3835.     - (port.*, random.*) Commented, converted function defs to ansi style.
  3836.  
  3837. 12-Aug-1998 (Lars Duening)
  3838.     - (driver.h) Created from the old lint.h, it defines some macros and
  3839.         includes config.h, machine.h and port.h. The system-dependent stuff
  3840.         will move into port.h eventually. All sources changed to use
  3841.         driver.h instead of lint.h.
  3842.     - (my-alloca.h) new, a wrapper for <alloca.h>.
  3843.     - (cruft/) New directory for code snippets which are no longer
  3844.         useful, but interesting enough to keep around.
  3845.     - (hosts/be/Makefile) New target 'dependall' updates the
  3846.         dependencies in Makefile, Makefile.in, and the Makefiles
  3847.         for Be, Amiga and OS/2.
  3848.  
  3849. 11-Aug-1998 (Lars Duening)
  3850.     - Compiled the sources with gcc on a high warning level and
  3851.       removed as many warnings as possible. Added some patches
  3852.       for compiling under Win32 with Cygwin32.
  3853.  
  3854. 09-Aug-1998 (Lars Duening)
  3855.     - 'Modularized' the sources: the exports of every .c file are
  3856.       listed in an associated .h file, and only there. The liberal
  3857.       sprinkling of 'extern' statements is gone.
  3858.  
  3859. 10-Jul-1998 (Lars Duening)
  3860.     - Release 3.2.1@141-osb.16
  3861.     - (prolang.y) Fixed a pointer mixup which caused '"*"::' to end
  3862.         in an endless loop. Bugfix provided by Daniel von Dincklage
  3863.         (<vonDincklage@ozet.de> aka Sunblade@sd.mud.de)
  3864.     - Updated the BeOS support: small tweaks to machine.h, the Makefile
  3865.         now supports cross-compilation, a small hack in comm1.c.
  3866.  
  3867. 04-Jul-1998 (Lars Duening)
  3868.     - (prolang.y) In case of a 'Program too large' compilation error,
  3869.         random memory was freed due to an uninitalized variable.
  3870.     - (mudlib/test_master.c) Added this minimal master for simple
  3871.         driver tests.
  3872.  
  3873. 17-May-1998 (Lars Duening)
  3874.     - Release 3.2.1@141-osb.14
  3875.     - (interpret.c) The apply cache is initialized on driver startup, not
  3876.       statically at compilation time. This allows compilers with less
  3877.       capable preprocessors (line length limitations) to use big caches
  3878.       as well.
  3879.  
  3880. 16-May-1998 and before (Lars Duening)
  3881.     - added rxcache.[ch]: cache for compiled regular expression patterns.
  3882.     - added support for BeOS.
  3883.     - (backend.c) Automatic garbage collections are kept at least 5 minutes
  3884.       apart. Every garbage collection is logged on stdout.
  3885.     - (backend.c) Variables are swapped independantly from program code.
  3886.     - (comm1.c, main.c) Multiple login ports may be used in parallel. The
  3887.       port numbers are given on the commandline, efun query_mud_port()
  3888.       was extended to return the appropriate port number.
  3889.     - (interpret.c) MudOS-efun terminal_colour() added by Mica.
  3890.     - (interpret.c) this_object() in destructed objects does not print a
  3891.       diagnostic anymore.
  3892.     - (lex.c) more informative diagnostics about defbuf allocations. Too
  3893.       big defbufs are deallocated again to conserve memory.
  3894.     - (main.c) reallocation of system reserves prints diagnostics.
  3895.     - (regexp.ch) NSUBEXP may take values different from 10 (OSB uses 50).
  3896.     - (swap.c) Free space is reused immediately.
  3897.     - (stralloc.ch, interpret.c) All the names of the lfuns applied by
  3898.       the driver are stored in the shared string table on startup.
  3899.       Together with some modifications to the apply cache for faster
  3900.       processing of applys on shared strings, this should make a mud
  3901.       a wee bit faster. Also added some comments in these areas (with
  3902.       no guarantee for correctness!).
  3903.     - (simulate.c) 'status tables' prints the number of cache hits both
  3904.       absolute and as percentage.
  3905.